#javascript #internet-explorer
#javascript #internet-explorer
Вопрос:
Я хочу загрузить внешний файл javascript, но я не могу использовать AJAX-запросы из-за той же политики происхождения, и у меня есть код:
<script type="text/javascript">
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'test.js';
head.appendChild(script);
</script>
Это нормально везде (Firefox, Chrome, Opera, IE9, IE6), но не в IE8, IE7.
Как я могу заставить это работать в IE8?
Комментарии:
1. это зависит от того, куда вы вставили этот код, смотрите второй пункт здесь kodeplay.com/2011/04/best-practices-for-ie
Ответ №1:
Как насчет старого document.write('<script language="javascript" src="test.js"></script>')
. Также вам не нужно добавлять к, head
вы можете использовать body
к.
Комментарии:
1. p.s. </script> -> </script> чтобы избежать ошибки ‘unterminated string literal’
Ответ №2:
Попробуйте прочитать о JsonP 🙂
Ответ №3:
Я не уверен, почему у вас возникли проблемы в IE, но следующее работало в Firefox 4, IE6 и IE9 (то есть в доступных мне браузерах):
<html>
<head>
</head>
<body>
<script type="text/javascript">
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js';
head.appendChild(script);
var interval = window.setInterval(function() {
if (typeof($) !== "undefined") {
$("<p>it worked!</p>").appendTo(document.body);
window.clearInterval(interval);
}
}, 100);
</script>
</body>
</html>
Комментарии:
1. фактически, ваше решение такое же, как в моем вопросе, и не работает в IE7 и IE8
2. нет, это не так. он ожидает, пока js не будет загружен, а затем использует его. в моих тестах это работало в ie6 .
3. да, вы правы. Дело в том, что я использовал «IE Tester», и, похоже, он неверно реализует IE7 и IE8, так что с вашим ответом тоже все в порядке, но я не могу выполнить несколько отправок. Итак, по крайней мере, я проголосовал за.
4. да, у меня были те же проблемы с ie tester. обычно я просто предполагаю, что если он работает в ie6 и последней версии, он будет работать и в промежуточных. вероятно, это безопасное предположение для 99% случаев.