[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подключение внешнего скрипта
wollk
Скажите пожалуйста, как на сайте site1.ru подключить JS скрипт с сайта site2.ru и вызывать имеющиеся там функции.
Смотрел скрипт всплывающих чатов-консультантов и эту статью http://xandeadx.ru/blog/javascript/420

Прописал у себя такой код:

    <script type='text/javascript'>
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = '//site2.ru/block.js';
document.getElementsByTagName('head')[0].appendChild(s);
</
script>


Захожу на страницу, смотрю исходный код - да, создался тег <script> который подключает нужный мне скрипт. В скрипте прописал alert, $("body").hide(), console.log("Test") - ничего не выполнилось. На сколько я понимаю, это такая политика безопасности - вроде бы все правильно.
Но как тогда подключить скрипт, который бы манипулировал содержимым страницы: добавил iframe на сайт и сворачивал/разворачивал его по клике на кнопку (типа того же чата с консультантами)
walerus
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
это подгружаете?, какую ошибку выдает консоль?
wollk
Ошибок в консоле нет. Тег script вставляется в конец head. Во вкладке "Сеть" вижу, что остальные внешние скрипты подгружаются, в том числе и библиотека jquery, а вот мой скрипт с другого локального хоста не подгружается. Будто тег вставился, но для его обработки нужно что-то еще выполнить. Но обычно, когда мне нужно на сторонний сайт внедрить Jquery через консоль, я пишу следующее:
var jq = document.createElement('script');
jq.src = "http://code.jquery.com/jquery-latest.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);

и все работает
Если я просто открою ссылку из s.src = '//site2.ru/block.js'; - отображает содержимое JS файла, т.е. сам файл доступен

Если я вручную пропишу <script src.....> все равно ничего не происходит, и во вкладке "Сеть" никаких упоминаний об этом скрипте
AllesKlar
wollk
у тебя скрипт скорее всего не успевает подрузиться к тому моменту, когда ты вызываешь его функции.
Дай ссылку на скрипт, который нужно загрузить удаленно.

_____________
[продано копирайтерам]
wollk
Мне кажется он вообще не подгружается. К сожалению скрипт на локалке, но вот его содержимое:

console.log("SHOW");
alert("test");

(
function() {
$("body").hide();
})();
walerus
wollk
А не пробовали по второму варианту подгрузить?
$.getScript('http://example.com/script.js', function(){
alert('script loaded');
});
wollk
Хм.. не пробовал. Работает! Спасибо! Правда такой вариант как-то не привычен. А нет догадок, почему не работает вариант с добавлением тега?
walerus
index.html
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
test 1</title>
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>

adasdsa
</body>
<script
type='text/javascript'>
var
s = document.createElement('script');
s.type = 'text/javascript';
s.src = '//localhost/testphp/block.js';
document.getElementsByTagName('head')[0].appendChild( s );
</script>
</html>

block.js
$( document ).ready( function() {
console.log("SHOW");
alert("test");

$("body").hide();
});



Проверяйте что у вас за чем следует, где то напутано... у меня все отрабатывает правильно
стиль в боди добавлен, с экрана убран...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.