改变src ="" iframe到javascript:

时间:2014-12-03 18:52:18

标签: javascript jquery html iframe

我正在尝试将iframe的源代码更改为javascript:... 我试了一下没有运气;

<iframe id="iframed" src="http://example.com"></iframe>

$('#iframed').attr('src','javascript:document.write("hello world")');

我收到“TypeError:document.write不是函数”错误。 这样做的正确方法是什么?

4 个答案:

答案 0 :(得分:3)

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

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

如果框架已从外部域加载,则无效。

答案 1 :(得分:3)

我所知道的标准没有定义,当您将src上的iframe属性设置为具有javascript:方案的URI时会发生什么。有a draft IETF note表明已存在的功能(如在锚元素中使用),但并未说用户代理必须做任何事情。您可以将其输入浏览器的地址栏,这是由于浏览器的实现。例如,我猜测将这个URL输入像lynx这样的命令行浏览器会让你无处可去。

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

答案 2 :(得分:0)

<!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>

尝试此操作适用于Chrome ...还可以查看此link

答案 3 :(得分:0)

由于您尝试将内容添加到iframe中,因此您首先需要知道,如果您无法控制框架内的网站(在您的示例中为“http://exemple.com”,则可能无法实现) )。

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

如果您可以控制iframe中的网站,则可以了解来自网站的邮件,包括iframe。如果您想这样做,您可能需要查看"How to communicate between iframe and the parent site?"