0

此代码有效:

(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)})();

但是当我在 URL 栏中键入 javascript: 后跟此代码时,我什么也得不到。为什么会这样?我不知道有任何此类行为。我可以在 URL 栏中设置 window.* 变量,并且可以操作 DOM。

那么这里有什么问题呢?

多谢你们。感谢你的帮助。

4

2 回答 2

1

It just doesn't work when you're on Google. I've tried it on a different page and it works.

它也适用于谷歌。您可以在 中找到<script>标签<head/>。但是,没有弹出警报窗口。那是因为:

Can someone please explain why this is?

Google 正在使用 https,如果您的网站提供 HTTPS 页面,则默认情况下会阻止此页面上通过 HTTP 提供的所有活动混合内容。in Chromeand Firefox(没有测试过其他浏览器。 )

这意味着,如果您的网站在安全 SSL 上运行,浏览器将阻止来自外部 http 源的一些不安全内容。在你的情况下,那是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.

怎么修:

  1. 使用另一个支持安全 SSL 的主机。https://yournewhost/test.php?callback=insert将工作。如果我们谈论一些常见的 javascript 库,请使用支持 https 的 CDN,例如 Google、Microsoft。
  2. 以 Chrome 为例,通过使用名为“-allow-running-insecure-content”的 Chrome 命令行参数来禁用不安全内容检查。[不推荐]

关于混合内容以及如何查看它 - 知识库

于 2013-10-31T03:01:49.223 回答
0

好的,显然@Wayne 是对的。当您在 Google 上时,它只是不起作用。我已经在不同的页面上尝试过它并且它有效。有人可以解释这是为什么吗?他们的 JavaScript 如何能够“解除”这段代码?

于 2013-10-30T16:52:05.077 回答