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

时间:2014-04-07 17:46:42

标签: javascript jquery html frames

我正在使用遗留代码并尝试将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对象一起传递。

1 个答案:

答案 0 :(得分:2)

我与遗留应用程序的情况相同。如果您嵌套多个深层文件,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值。