加载的IFrame
问题描述:
背景资料:
你好, 最近我一直在试图建立一个网站生成供我上学,这已经相当不错,它几乎拥有的许多功能维克斯。最近,我尝试通过parallax.js添加对视差效果的支持,并且它完美地工作(您可以生成网站并在保存并在新选项卡中打开它时看到它),但parallax.js不会重新扫描页面每次页面改变时,视差元素。我尝试使用iframe来做到这一点,它的工作。然而,我给他们预览的方式是代码是在客户端生成的(在页面生成器中),所以我需要一种方法来使用生成的代码通过JavaScript'加载'IFrame。
直达该点:
如何加载一个IFrame页面,该页面使用由javascript生成的客户端代码,并存储在变量中?每次对页面进行更改时都需要重新加载,这会触发第三方软件库。加载的IFrame
答
你应该能够逃脱: -
var newCode = "<p>YOUR HTML</P>";
$('#myIframe').contents().find('html').html(newCode);
如果jQuery是无效的,那么这相当于: -
var newCode = "<p>YOUR HTML</P>";
var iframe = document.getElementById('myIframe');
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
iframeDoc.getElementsByTagName('html')[0].innerHTML = newCode;
然而,更多的 '未来' 依赖的方式您的浏览器支持目标可能是使用HTML5 srcdoc
属性。在撰写本文时,IE不支持此功能。
<iframe srcdoc="<p>Hello world!</p>" src="demo_iframe_srcdoc.htm"></iframe>
如果浏览器支持srcdoc属性,它将覆盖在src属性所指定的内容(如果存在)。
要使用变量更新它,您应该能够选择iframe并获取srcdoc
属性,然后将该变量赋值为该值。
var newCode = "<p>New code</p>";
document.querySelector('iframe').setAttribute('srcdoc', newCode);
// or try this -
document.getElementById("myFrame").srcdoc = "<p>Some new content inside the iframe!</p>";
延伸阅读:
是否html的()jQuery中运行在iframe任何脚本标记? (我正在寻找所有函数,指示页面的开始,如onload,要运行。) –
@ Evan_K2014是的,它应该运行良好。请检查http://stackoverflow.com/questions/1591135/why-does-appending-a-script-to-a-dynamically-created-iframe-seem-to-run-the如果您遇到问题并且想要尝试更明确地添加脚本标记。 – Shakespeare
谢谢你的快速回答!这大大帮助了我。我会+1,但我不是15代表。 –