Я пытаюсь превратить букмарклет в небольшую среду разработки, которую я могу использовать для быстрой проверки некоторых javascript и отправки команд на лету и быстрого обновления кода на моем сервере, чтобы увидеть результат. Это работает наполовину, используя метод, который я нашел на этом сайте и google, однако он не работает очень хорошо, а иногда случайно не работает. Конечная цель - иметь букмарклет, который я могу щелкнуть на любой странице, и загружает файл javascript, который я сохранил на своем сервере. Я создал следующие два букмарклеты, чтобы попытаться получить эту работу:Невозможно загрузить сценарий с другого сервера - проблема политики безопасности контента?
Failed Метод 1:
javascript:
var s = document.createElement('script');
s.type='text/javascript';
document.body.appendChild(s);
s.src='//smewth.com/test.js';
void(0);
Метод 1 в одной строке формы Bookmarklet: javascript: var s = document.createElement('script'); s.type='text/javascript'; document.body.appendChild(s); s.src='//smewth.com/test.js'; void(0);
Failed Метод 2:
javascript:(
function(){
var imported = document.createElement('script');
imported.type='text/javascript';
imported.src = 'https://smewth.com/test.js';
document.head.appendChild(imported);
})();
Способ 2 в одной строчке в виде букмарклета: javascript:(function(){ var imported = document.createElement('script'); imported.type='text/javascript'; imported.src = 'https://smewth.com/test.js'; document.head.appendChild(imported); })();
У меня есть метод 1, разложив буклет-буклет от (http://kickassapp.com/). Фактический, который я получил со своего сайта, отлично работает на моем браузере без проблем. Я даже сделал прямую подстановку из URL-адреса, который они использовали для загрузки с моим URL-адресом. Второй метод, который я нашел во время поиска на этом сайте, и это на самом деле мало работало и перестало работать по неизвестной причине (возможно, в разных браузерах). Я попытался добавить этот объект сценария к голове и телу на каждом из них без улучшения результатов.
Я создал сценарий test.js только для этой должности, и он содержит простое заявление ящика предупреждения:
$$ [/]# cat test.js
alert("hi");
$$ [/]#
ПРИМЕЧАНИЯ: Когда я делаю это с кодом, заложенным в самом букмарклете, не добавляя его объект голова/тело, то он работает нормально, например, как это:
javascript:%20alert("hi");
я заметил, что с обоими этими методами, код на самом деле получить впрыскивается в страницу, однако я не вижу код когда-либо выполняется, когда Я нажимаю на закладку. Кто-нибудь знает, какой метод является лучшим или что-то подобное, чтобы сделать это, чтобы я мог загружать javascript через страницу, которую я обновляю на удаленном сервере (надежно)? Может быть, мне нужно прикрепить к другому объекту?
Благодарим за помощь.
-Джефф
UPDATE: Я показываю это работает, пока не загрузится этот сайт, но он не работает, когда ваш на сайте, как google.com. Не знаете, в чем разница или как это разместить, google.com имеет голову и объект тела. Я показываю, что это работает на некоторых сайтах, а в некоторых - нет.
Возможно, это связано с ** Политикой безопасности контента **, но это не объясняет, почему я могу загрузить букмарклет kickass на google.com, и я не могу загрузить тот, который я сделал на нем. – Jeff82
Выполняется ли ошибка XSS или ошибка CSP в браузере? Вероятно, вы хотите использовать JSONP для обхода, если это XSS. –
Спасибо за ваш ответ. На самом деле я не вижу ошибок в браузере. После того, как я нажимаю на закладку, я показываю, что теги