jQuery的 - 一个iframe里面的脚本代码无法更新iframe的内容
我有以下的html:jQuery的 - 一个iframe里面的脚本代码无法更新iframe的内容
<html>
<head></head>
<body>
<form>
<input id="msg" type="text" value="oldValue" />
</form>
<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script>
$().ready(function() {
var m = $("#msg");
alert(m.val()); // returns oldValue
m.val("newValue"); // this doesn't make the browser show newValue instead of oldValue
alert(m.val()); // returns newValue
// and in the end, the browser still shows oldValue for the input
});
</script>
</body>
</html>
此代码运行完美,但是当置于facebox(这只是创建一个iframe并显示它像一个浮动窗口),代码无法更新输入的内容。
父母也有jQuery,但不应该影响我猜测的任何东西。
任何想法为什么它失败?
无法在Firefox 3,IE 7或Chrome 2上复制。无论代码是否在iframe中,该代码都可以正常工作(使用newValue
)。
您是否测试了缩减样本的实现,而不是原始样本?因为我怀疑我们有一个问题,你认为它们是相同的,而不是。
当然,好消息是,如果您发布的示例实现有效,那么您所要做的就是添加实际实现中的元素,直到出现问题。
实际上,在我的实现中,它是从同一个域加载的,粘贴的版本只是为了能够共享它,因为我的实现要大得多:) – Prody 2009-08-19 17:01:10
doc = xframe.contentWindow.document || xframe.document || xframe.contentDocument || xframe.contentWindow && xframe.contentWindow.document || null;
if(!doc)
{
alert("Error");
return false;
}
var m = $(doc).find("#msg");
如果你仔细阅读我的描述,你会发现我的脚本成功找到#msg元素,可以读取它的值,但无法设置它。 – Prody 2009-08-19 17:02:08
好的,我正在进行的是访问数据的替代方案。那么这在你的能力适应。有一件事是没用的,其他的东西是错误的。 – 2009-08-19 17:40:38
如果项目位于iframe中,则只能使用iframe对象进行访问。我们必须看看在当前文档的iframe中是否有相同的id,¿ – 2009-08-19 17:44:00
你是否试过让实际的DOMElement而不是使用jQuery的方法来做到这一点? – geowa4 2009-08-19 17:31:21