2015-11-11 3 views
0

Я пытаюсь превратить букмарклет в небольшую среду разработки, которую я могу использовать для быстрой проверки некоторых 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 имеет голову и объект тела. Я показываю, что это работает на некоторых сайтах, а в некоторых - нет.

+0

Возможно, это связано с ** Политикой безопасности контента **, но это не объясняет, почему я могу загрузить букмарклет kickass на google.com, и я не могу загрузить тот, который я сделал на нем. – Jeff82

+1

Выполняется ли ошибка XSS или ошибка CSP в браузере? Вероятно, вы хотите использовать JSONP для обхода, если это XSS. –

+0

Спасибо за ваш ответ. На самом деле я не вижу ошибок в браузере. После того, как я нажимаю на закладку, я показываю, что теги