Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.12.2017, 13:05
Новичок на форуме
Отправить личное сообщение для Killigo Посмотреть профиль Найти все сообщения от Killigo
 
Регистрация: 14.12.2017
Сообщений: 9

Я просто думал что можно менять часть кода html. По типу быстрой замены, т.е. изменение данных расширением перед выводом страницы на экран.
Ответить с цитированием
  #12 (permalink)  
Старый 15.12.2017, 13:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Сообщение от Nexus Посмотреть сообщение
Killigo, в сообщении №2 этой темы в строке 2 перед равно ("=") звездочку добавьте.
И посмотрите на то, что вы в шапке написали и какой код предоставили.
Не звёздочку, а ^ .

Killigo:
Array.prototype.forEach.call(
  document.querySelectorAll('[href^="/sw/Timesheet/TimesheetViev"]'),
  function(element){
    element.setAttribute('href', 
      element.getAttribute('href').replace('Viev', 'Edit')
    );
  }
);


Сообщение от Killigo Посмотреть сообщение
Я просто думал что можно менять часть кода html. По типу быстрой замены, т.е. изменение данных расширением перед выводом страницы на экран.
Нельзя. Во-первых браузер парсит и выводит по мере получения, кусками, т.е. даже если бы можно было менять необработанный текст ответа, то пришлось бы заморочиться. Но расширениям не разрешено менять входной поток в любом случае. Потому работать придётся с готовым результатом, т.е. DOM.
Можно запускать расширение примерно в начале вывода документа и отлавливать добавление узлов, но для данной задачи это не нужно.
__________________
29375, 35

Последний раз редактировалось Aetae, 15.12.2017 в 13:51.
Ответить с цитированием
  #13 (permalink)  
Старый 15.12.2017, 13:48
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от Aetae
Не звёздочку, а ^ .
автор изменил код, ранее верным селектором была бы эта строка:
[href*="/Timesheet/TimesheetViev"]


ps. момент запуска скрипта можно выбрать, опция "run_at".
https://developer.chrome.com/extensions/content_scripts

Последний раз редактировалось Nexus, 15.12.2017 в 13:53.
Ответить с цитированием
  #14 (permalink)  
Старый 15.12.2017, 13:53
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Сообщение от Nexus Посмотреть сообщение
автор изменил код, ранее верным селектором была бы эта строка:
[href*="/Timesheet/TimesheetViev"]
Вот негодяй.)

Сообщение от Nexus Посмотреть сообщение
ps. момент запуска скрипта можно выбрать, опция "run_at".
https://developer.chrome.com/extensions/content_scripts
Ага, только document_start не гарантировано срабатывает на старте, увы. В большинстве случаев, но не всегда.
__________________
29375, 35

Последний раз редактировалось Aetae, 15.12.2017 в 13:58.
Ответить с цитированием
  #15 (permalink)  
Старый 15.12.2017, 14:36
Новичок на форуме
Отправить личное сообщение для Killigo Посмотреть профиль Найти все сообщения от Killigo
 
Регистрация: 14.12.2017
Сообщений: 9

Почему-то не работает.

<a class="btn btn-default btn-xs" data-ajax="true" data-ajax-loading="#progress" data-ajax-mode="replace" data-ajax-update="#resultsheets" href="/sw/Timesheet/TimesheetView?departmentId=17&amp;GetProdSums=True">ПП</a>
- Это кнопка.

Сейчас мне приходится в браузере нажимать F12 и менять руками Viev на Edit. Думал немного автоматизировать этот процесс. Чтобы при включении расширения и нажатии на кнопку выводилась страница изменения(Edit), а не отображения(View) данных.

manifest.json:
Код:
{
  "name": "Test",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Test",
  "content_scripts": [
    {
      "matches": ["*://ip/*"],
      "js": ["content.js"]
    }
  ]
}
content.js:
Код:
Array.prototype.forEach.call(
  document.querySelectorAll('[href^="/sw/Timesheet/TimesheetViev"]'),
  function(element){
    element.setAttribute('href',
      element.getAttribute('href').replace('Viev', 'Edit')
    );
  }
);
Расширение автоматом активируется?

Последний раз редактировалось Killigo, 15.12.2017 в 16:16.
Ответить с цитированием
  #16 (permalink)  
Старый 15.12.2017, 22:41
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Array.prototype.forEach.call(
  document.querySelectorAll('[href^="/sw/Timesheet/TimesheetVie*!*w*/!*"]'),
  function(element){
    element.setAttribute('href',
      element.getAttribute('href').replace('Vie*!*w*/!*', 'Edit')
    );
  }
);

Вы в первом посте от руки писали? Зачем 0_о?
__________________
29375, 35

Последний раз редактировалось Aetae, 17.12.2017 в 05:53.
Ответить с цитированием
  #17 (permalink)  
Старый 18.12.2017, 13:14
Новичок на форуме
Отправить личное сообщение для Killigo Посмотреть профиль Найти все сообщения от Killigo
 
Регистрация: 14.12.2017
Сообщений: 9

Не работает. Расширение не надо как-то активировать?

Последний раз редактировалось Killigo, 18.12.2017 в 13:20.
Ответить с цитированием
  #18 (permalink)  
Старый 18.12.2017, 18:09
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Работает:
http://ajitae.tk/test/
http://ajitae.tk/test/content.js
http://ajitae.tk/test/manifest.json
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть расщепление chrome, написанное на AngularJS. Нужно менять иконку на панеле, в triest Общие вопросы Javascript 1 19.12.2016 23:02
Разработка расширений для Chrome bunta Javascript под браузер 0 24.04.2016 10:00
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Нужно привязать событие для кнопки на javascript maraf0n Элементы интерфейса 1 18.04.2013 11:53
Нужно написать extensions для marked vels Работа 0 12.03.2013 22:25