将事件从框架发送到顶级文档

Send event to top level document from a frame?

本文关键字:文档 事件 框架      更新时间:2023-09-26

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

这是 1996-1999 年 Web 应用程序的一个子部分。在应用程序的其余部分中,单击该按钮会触发 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 对象一起传递。

我在使用旧版应用程序时处于同样的情况。 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();
}); 

对于普通点击事件,将忽略额外的参数值。