从外部脚本到GWT父脚本的postMessage
postMessage from external script to GWT parent
我发现了使用html5的postMessage从一个iframe通信到另一个iframe的乐趣。
然而,我遇到的问题是,我正在运行一个加载iframe(带有外部域)的GWT应用程序。现在,我想从外部域向GWT应用程序发回一条消息。我第一次天真地尝试:
parent.postMessage('hello', '*');
,同时监听GWT应用程序中的消息事件。这不起作用,因为GWT的javascript自己在iframe中运行。
我让它工作的方法是:
document.getElementById(myGwtModuleName).postMessage('hello', '*');
很好,它的工作,但如果我决定改变我的Gwt的模块名称?整个过程将会中断,在一年之内,人们可能会绞尽脑汁去找出原因。
是否有更好的方法将消息发送回GWT应用程序?或者我如何在运行时找出Gwt的模块名称?在这种情况下,我可以将它作为参数传递给iframe。
谢谢你的帮助!
有同样的问题,花了我一段时间,但你必须调用这个,让它工作:)
这是解决方案
public final native void doPost() /*-{
$wnd.parent.postMessage("Hello parent from your GWT iFrame!", '*');
}-*/;
问候,Stefan
如何将侦听器添加到当前窗口(例如包含GWT脚本的窗口)。应该使用$doc或$ wind变量作为监听器的目标。$doc变量始终是对包含GWT应用程序引导脚本的文档的引用。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- 不显示带有本地json文件数据的谷歌地图脚本
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 从远程脚本获取用户IP
- 如何根据时间运行不同的脚本
- 如何将字符串值从php页面发送到java脚本页面
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 当脚本由system.js加载时,如何要求('electron')
- HTML标记在脚本标记中工作
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 显示时间的脚本
- ng应用程序使脚本无限运行
- 使用 jQuery 的 Html5 postMessage,但不使用 jQuery-postMessage 脚本
- window.postMessage从web_accessible_resource到内容脚本
- 从外部脚本到GWT父脚本的postMessage