Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Нужно расширением для Chrome. (https://javascript.ru/forum/css-html/71809-nuzhno-rasshireniem-dlya-chrome.html)

Killigo 15.12.2017 13:05

Я просто думал что можно менять часть кода html. По типу быстрой замены, т.е. изменение данных расширением перед выводом страницы на экран.

Aetae 15.12.2017 13:44

Цитата:

Сообщение от Nexus (Сообщение 472978)
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 (Сообщение 472981)
Я просто думал что можно менять часть кода html. По типу быстрой замены, т.е. изменение данных расширением перед выводом страницы на экран.

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

Nexus 15.12.2017 13:48

Цитата:

Сообщение от Aetae
Не звёздочку, а ^ .

автор изменил код, ранее верным селектором была бы эта строка:
[href*="/Timesheet/TimesheetViev"]


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

Aetae 15.12.2017 13:53

Цитата:

Сообщение от Nexus (Сообщение 472993)
автор изменил код, ранее верным селектором была бы эта строка:
[href*="/Timesheet/TimesheetViev"]

Вот негодяй.)

Цитата:

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

Ага, только document_start не гарантировано срабатывает на старте, увы. В большинстве случаев, но не всегда.

Killigo 15.12.2017 14:36

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

<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')
    );
  }
);

Расширение автоматом активируется?

Aetae 15.12.2017 22:41

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

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

Killigo 18.12.2017 13:14

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

Aetae 18.12.2017 18:09

Работает:
http://ajitae.tk/test/
http://ajitae.tk/test/content.js
http://ajitae.tk/test/manifest.json


Часовой пояс GMT +3, время: 02:26.