我正在尝试使用 JavaScript 创建一个 <iframe>,然后将一个 <script> 元素附加到该 <iframe>,我想在 <iframe>d 文档的上下文中运行该元素。
不幸的是,我似乎做错了什么 - 我的 JavaScript 似乎成功执行,但 <script> 的上下文是父页面,而不是 <iframe>d 文档。当浏览器请求iframe_test.js 时,我还在 Firebug 的“Net”选项卡中收到 301 错误,但它随后再次请求它(不知道为什么?)成功。
这是我正在使用的代码(http://onespot.wsj.com/static/iframe_test.html 上的现场演示):
iframe_test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title><iframe> test</title>
</head>
<body>
<div id="bucket"></div>
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#bucket').append('<iframe id="test"></iframe>');
setTimeout(function() {
var iframe_body = $('#test').contents().find('body');
iframe_body.append('<scr' + 'ipt type="text/javascript" src="http://onespot.wsj.com/static/iframe_test.js"></scr' + 'ipt>');
}, 100);
});
</script>
</body>
</html>
iframe_test.js
$(function() {
var test = '<p>Shouldn\'t this be inside the <iframe>?</p>';
$('body').append(test);
});
看起来不寻常的一件事是iframe_test.js 中的代码甚至可以工作;我没有在 <iframe> 本身中加载 jQuery,只有在父文档中。这对我来说似乎是一个线索,但我无法弄清楚这意味着什么。
任何想法,建议等将不胜感激!