javascript - 当 iframe DOM 更改时,目标 ="framename"如何工作

标签 javascript html dom iframe target

我知道 iframe 是邪恶的,但我的是遗留应用 n 我需要在其中使用 iframe。所以……

我需要为我的网络应用动态创建 n 个 iframe 显示标签。所有帧源都是域内的,因此可以在帧内进行完全遍历 n 访问。

DOM 中 iframe 的问题在于这些 iframe 注册为 window.frames.framename,因此我将在“frames”对象中包含这些对象的数组。

我的要求是“事件”框架必须具有名称“表单”。所以我在将该框架设置为事件时更改了该 iframe 属性。但这并没有在 DOM 中反射(reflect)为 window.frames.form,所以我也通过像这样设置当前框架对象来手动更改它: frames.form = my_frame.content 窗口

所有这些工作正常 n 我现在能够正确访问事件“表单”iframe 中 n 中的所有内容。

现在的问题是我在主页上的链接有 target="form"。目标未被识别为名称为“表单”的最新集(事件)iframe,因此单击该链接时会在浏览器的新窗口/选项卡中打开。此行为在除 firefox 之外的所有浏览器中都存在。 (Firefox 执行所需的操作:以最新形式的 iframe 打开这些链接)

我想我不了解浏览器如何操纵与 iframe 相关的 DOM 中的此类更改。所以任何帮助将不胜感激。谢谢!

更新: 这是一个简化的代码(注意:不是原始代码):http://jsfiddle.net/u4VJL/5/

 function AddNewTab(e) {
     $('#list').attr('id', 'nolist').attr('name', 'nolist');
     $('#form').attr('id', 'noform').attr('name', 'noform');

     $(document.body).append('<iframe id="list" name="list" src="" marginwidth="0" marginheight="0" scrolling="auto" frameborder="1" class="form" style="width:22%"></iframe>');
     $(document.body).append('<iframe id="form" name="form" src="" marginwidth="0" marginheight="0" scrolling="auto" frameborder="1" class="form" style="width:74%"></iframe>');
     frames.list = $('#list')[0].contentWindow;
     frames.form = $('#form')[0].contentWindow;

     return false;
 }
 $('#addnew').click(AddNewTab);

重现问题的步骤:

  • 点击一次“添加新标签”链接。
  • 单击“示例链接”- 该 href 将加载到右侧框架中 命名为“表单”。
  • 再次点击“添加新标签”。应该会出现一个新的 iframe。
  • 再次点击“示例链接”。该页面现在应该在第二个右侧加载 框架,但它首先加载。
  • 注意:存在此问题的浏览器(我已经测试过):Google Chrome、 IE8。 Firefox 没有这个问题。

最佳答案

你需要使用 live:
$('#addnew').live("点击", AddNewTab);

呃,这是一个错误的答案,我认为你需要这样看:

$("a[target=form]").click( function(){
    $("#form").last().attr("src", $("a[target=form]").attr("href"));
    $("#form").reload();
    return false;
});

这行得通

关于javascript - 当 iframe DOM 更改时,目标 ="framename"如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565278/

相关文章:

javascript - req.send ('null' ) 不是 Node.js mySQl 的函数

javascript - WebGl - 只能绘制一个对象

html - UIKit Toggle 元素默认隐藏

javascript - iframe 和innerHTML 有什么区别

javascript - 来自MySQL数据库的js幻灯片不循环显示图像

javascript - 使用javascript/jquery跟踪浏览器发送的http请求

jquery - 如何在 Owl Carousel 2 中显示事件元素及其旁边的其余元素

html - 如果我使用 "cursive"或 "fantasy"字体系列,表情符号仅显示在 Chrome 上

javascript - 删除标签(和标签内容)但保留文本

javascript - 为页面加载时不存在的内容设置动画