【问题标题】:What does the browser do when the source of iframe is javascript当 iframe 的来源是 javascript 时浏览器会做什么
【发布时间】:2023-03-26 15:24:01
【问题描述】:

当 iframe 的来源是:

javascript:'';

如:

<iframe id="SpControlFrame1" name="SpControlFrame1" src="javascript:'';" path_src="index.php?cmd=YYY" ></iframe>

发生了什么事? src="javascript:'';" 是什么意思告诉浏览器做什么?

“path_src”有什么作用?

谢谢 克里斯

【问题讨论】:

    标签: javascript iframe


    【解决方案1】:

    它告诉浏览器显示执行空字符串文字的结果。因此,它只会显示一个空字符串。

    您可以通过在普通窗口/选项卡的地址栏中输入javascript:'http://stackoverflow.com'; 来测试此效果。您会看到一个显示“http://stackoverflow.com”的白页,您实际上不会被带到该 URL。

    这就是为什么小书签经常将代码包装在void() 或不返回任何内容的匿名函数中,以阻止浏览器尝试显示小书签的执行结果。例如:

    javascript:void(window.open("dom_spy.html"))
    

    或者:

    javascript:(function () { window.open("dom_spy.html"); })()
    

    如果您直接使用返回某些内容的代码(在这种情况下为新窗口实例),浏览器最终会显示:

    javascript:window.open("dom_spy.html");
    

    在 Firefox 中将显示以上内容:

    [对象窗口]

    【讨论】:

    • 请注意,它并不都需要被包裹在一个空隙中。浏览器将尝试显示最后一条语句的返回,因此只要最后一条语句不返回任何内容,您就可以执行任何操作,例如javascript:(function hello(msg){return msg;})('BOO!');void(0);
    【解决方案2】:

    据我所知,src 属性映射到 iframe 元素 location.href。所以将src 设置为javascript:''; 有点荒谬,浏览器会做以下两件事之一:

    • 忽略它,因为它不是 URI 并且不能解析为任何可显示的资源
    • 执行没有产生任何结果的javascript

    无论哪种方式,您都做得很少。这段代码是你继承的还是你想用iframe做一些棘手的事情?

    【讨论】:

    • 继承。 path_src 起什么作用?
    • @cbrulak 它什么也没做。它是一些其他框架正在使用的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2018-06-27
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多