此代码有效:
(function() {
var scr = document.createElement('script');
var head = document.getElementsByTagName('head')[0];
window.insert = function(data) {
alert(data);
};
scr.src = 'http://nocore.info/test.php?callback=insert';
scr.type = 'text/javascript';
head.appendChild(scr);
})();
使用jsFiddle进行测试。它的作用是通过JSONp获取一个字符串并提醒它。
这段代码也是如此:
(function(){var a=document.createElement("script"),b=document.getElementsByTagName("head")[0];window.insert=function(a){alert(a)};a.src="http://nocore.info/test.php?callback=insert";a.type="text/javascript";b.appendChild(a)})();
但是当我输入javascript:在URL栏后面跟着这段代码,我什么都没得到。这究竟是为什么?我不知道有任何这样的行为。我可以在URL栏中设置window。*变量,我可以操作DOM。
那么这些人的问题是什么?
谢谢你们。感谢您的帮助。
答案 0 :(得分:1)
It just doesn't work when you're on Google. I've tried it on a different page and it works.
它也适用于Google。您可以在<script>
中找到<head/>
标记。但是,没有弹出警报窗口。那是因为:
Can someone please explain why this is?
Google正在使用https,如果您的网站提供HTTPS网页,则默认情况下会阻止通过此网页上的HTTP传送的所有有效混合内容。 Chrome
和{{1} (尚未测试其他浏览器。)
这意味着,如果您的网站在安全SSL上运行,浏览将阻止来自外部http源的一些不安全内容。在你的情况下,那是Firefox
。打开控制台面板,您将看到错误/警告:
http://nocore.info/test.php?callback=insert
如何解决:
[blocked] The page at https://www.google.com/ ran insecure content from http://nocore.info/test.php?callback=insert.
会奏效。如果我们正在讨论一些常见的JavaScript库,请使用支持https的Google,Microsoft等Microsoft CD。答案 1 :(得分:0)