【问题标题】:Send event to top level document from a frame?将事件从框架发送到顶级文档?
【发布时间】:2014-04-07 17:46:41
【问题描述】:

我正在使用遗留代码并尝试将 jQuery onClick 触发器添加到 顶级 父文档,但我似乎无法让它工作。老实说,我不确定这个元素会走多少帧。

这是 1996-1999 年网络应用程序的一个子部分。在应用程序的其余部分中,单击按钮会触发 jquery-ui 模式。

我试过了

<img id="help-button" 
     data-pagehash="Need This" 
     onclick="$('#help-button', parent.document).click()" 
     src="stuff" />

      onclick="window.parent.$('#help-button').trigger('click')" 

但两者都不起作用,也没有抛出错误。我不确定还能做什么。我真的没有太多使用框架的经验,而且由于它们大多是过时的,关于它们的信息很少。

我还需要将数据属性发送给顶级父级,如果这会有所不同的话。我不确定这是否与 DOM 对象一起传递。

【问题讨论】:

  • 这听起来很可怕......
  • 首先是同一个域吗?
  • jQuery 是在两个文档中加载还是仅在父文档中加载?
  • @epascarello jquery 被加载到需要调用它的框架和顶级文档中。我知道这些中的每一个都是一成不变的,但我不知道在应用程序的某处它们之间是否还有其他框架。如果这有意义...我知道顶层是main.htx,触发事件的页面是toolbar.htx,两者都有jquery。

标签: javascript jquery html frames


【解决方案1】:

我在使用旧版应用时遇到了同样的情况。 Window.top 如果您的嵌套深度超过一层,则将带您进入顶层文档,然后您应该能够向下导航到正确的框架。要获取您的数据属性值,请使用onclick="window.top.frames[0].$("#help-button").trigger('click', [this])" 将当前按钮/图像作为附加参数传递。然后你可以像这样从顶层绑定中获取数据:

$("#help-button").on("click", function(e, additionalArgs) {
   var data = 'some default value';
   if(additionalArgs) {
      data = $(additionalArgs).data('pagehash');
   }

   $("#dialog").text(data).dialog();
}); 

对于正常的点击事件,additionalArgs 值将被忽略。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    相关资源
    最近更新 更多