将 iframe 的 src=“” 更改为 javascript:

Change src="" of iframe to javascript:

本文关键字:javascript iframe src      更新时间:2023-09-26

>我正在尝试将 iframe 的源代码更改为 javascript:...我尝试过这个没有任何运气;

<iframe id="iframed" src="http://example.com"></iframe>
$('#iframed').attr('src','javascript:document.write("hello world")');

我收到"类型错误:文档.write 不是一个函数"错误。正确的方法是什么?

如果您只想将内容写入框架,则可以直接访问其文档对象:

document.getElementById("iframed").contentDocument.write("Hello World!");

但是,如果框架已经从外部域加载,则这将不起作用。

据我所知,没有标准来定义当您使用javascript:方案将iframe上的src属性设置为URI时应该发生的情况。有一个IETF笔记草案,它建议已经存在哪些功能(比如它在锚元素中的使用),但没有说用户代理必须做任何事情。您可以将其输入到浏览器的地址栏中的事实是由于浏览器的实现。例如,我猜在像lynx这样的命令行浏览器中输入该URL会让你一事无成。

如果你想使用 JavaScript 在帧之间进行通信,那将是一个不同的问题。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <iframe id="iframed"></iframe>
        <script>
         var test = "Hello World!";
         document.getElementById("iframed").src = "data:text/html;charset=utf-8," + test;
        </script>
    </body>
</html>

试试这个,它可以在铬...另请查看此链接

由于您尝试将内容附加内容放入 iframe 中,因此您首先需要知道,如果您无法控制框架内的站点(在您的示例中"http://exemple.com"),则可能是不可能的。

否则很容易注入脚本,这会导致各种安全问题。

如果您控制了 iframe 中的站点,则可以使其能够理解来自站点(包括 iframe)的消息。如果要这样做,可能需要查看"如何在 iframe 和父站点之间进行通信?