JS: Bookmarklet — создайте букмарклет, который запускает локальный файл js для заполнения полей в форме текущей страницы.

Я пытаюсь создать букмарклет, который заполняет поля в форме моей текущей страницы.

Вот простой скрипт, который заполняет 1 поле заданным значением:

javascript:(function(){d=document;e=d.getElementById("ember469");e.value="[email protected]";e.blur();})();

Это работает правильно, если я храню в качестве закладки. Теперь я хочу сохранить этот JS в локальном файле на своем компьютере, потому что я хочу заполнить X полей и не хочу поддерживать код из букмарклета.

Я попытался создать букмарклет, который вызывает мой локальный js "test.js", используя:

javascript:(function(){var js=document.createElement('script');js.setAttribute('src', 'C:/Users/path/to/my/sample.js');document.body.appendChild(js);}());

Я получил эту идею по этим ссылкам:
Ссылка 1
Ссылка 2

Вот мое содержимое sample.js:

function(){d=document;e=d.getElementById("ember469");e.value="[email protected]";e.blur();}

Я просмотрел SO, но не могу найти образец, который загружает локальный js, большинство образцов загружают онлайн-файл js.

Я не могу сделать эту работу. Что мне не хватает?

Любая помощь приветствуется!

ОБНОВЛЕНИЕ: Основываясь на ответе @Shugar ниже, я обновил и свой sample.js, и букмарклет. Я вижу, как тег скрипта вставляется на страницу, но этот скрипт не срабатывает. Поле не заполняется.

введите здесь описание изображения


person iamkenos    schedule 18.07.2017    source источник


Ответы (1)


Я надеюсь, что следующий способ будет работать для вас. (Просто немного отредактировал опубликованный код.)


Букмарклет:

javascript: (function() {
    var js = document.createElement('script');
    js.setAttribute('src', 'C:/Users/path/to/my/sample.js');
    document.body.appendChild(js);
})();


sample.js:

(function() {
    d = document;
    e = d.getElementById("ember469");
    e.value = "[email protected]";
    e.blur();
})();
person Shugar    schedule 18.07.2017
comment
Привет, спасибо за ваш ответ! Я обновил свой вопрос с результатами. Я вижу, что тег script вставляется, но sample.js не запускается - поле не заполняется. - person iamkenos; 19.07.2017
comment
Привет, вы уверены, что действия из «sample.js» не запускаются? Попробуйте добавить первую строку, например alert("From 'sample.js'");, в свою анонимную функцию. Мне кажется, что идентификатор типа ember469 просто изменен на веб-странице. - person Shugar; 19.07.2017
comment
да. Я проверил элемент. Только что я попытался с образцом предупреждения, как вы предложили, и даже это не сработало. Действительно интересно, что мне не хватает. - person iamkenos; 19.07.2017
comment
Попробуйте открыть веб-консоль в Chrome (Ctrl+Shift+I) и посмотреть на возникшие ошибки. - person Shugar; 19.07.2017
comment
Ух ты! спасибо за этот совет. Я получаю эту ошибку: Not allowed to load local resource: file:///C:/Users/..../sample.js Я пойду посмотрю. - person iamkenos; 19.07.2017
comment
Я собираюсь пойти дальше и принять этот ответ, если мне удастся сделать это с моего личного компьютера. Политики безопасности на рабочем месте не позволяют мне вносить какие-либо изменения в Google Chrome, чтобы обойти эту проблему и проверить ее. Спасибо еще раз! - person iamkenos; 19.07.2017
comment
Да, это работает, только если веб-страница является локальным файлом... Я считаю, что вам просто нужен более профессиональный инструмент для веб-автоматизации. Вариантов много, например, 'iMacros' (бесплатные расширения для Chrome и Firefox ). Многим вполне достаточно, чтобы творить удивительные вещи! Надеюсь, что «iMacros» будет вам полезен. - person Shugar; 19.07.2017
comment
Спасибо за совет, но у меня есть причины, по которым я хочу сделать это через букмарклет. например - безопасность рабочего места при установке приложений, при установке плагинов для браузера и т.д. - person iamkenos; 20.07.2017