szhtest 发表于 2024-11-11 08:58:37

iframe跨域通信

本帖最后由 szhtest 于 2024-11-11 09:52 编辑

场景是这样的:
目前我有一个门户页面,门户页面中有放置一个statement和iframe。我在查询配置的打开文档中脚本里写了点击视图列就可以打开iframe文档的代码,iframe跳转的文档是一个内容管理界面(根据iframeNodeList.src传递的参数不同页面加载的内容也不同,其实跳转的就是内容管理:邮件阅读表单,即根据不同数据跳转的是不同的邮件)

需求:
          我在视图列里放置了一个自定义元素按钮(符合条件时才会出现),我在视图列的显示文本中给了这个按钮一个类,并且在statement组件的loadviwe事件中添加了该按钮的点击事件(通过class找到这个元素给它添加点击事件)。该按钮是html代码写的自定义元素,且视图列中还有其他内容,所以没有直接在视图列的click事件中写
          我想在点击事件中写一个x变量,当触发点击按钮时 x=1。现在我想把这个x变量的值传递给iframe打开的内容管理界面接收,我该怎么做?需要怎么传递,并且在对应的内容管理界面上接收到这个值呢?我对应的内容管理界面也需要获取传过来的x值写代码。
可是目前的打开网址iframeNodeList.src是写在打开文档脚本里的,我也不知能有什么办法将x变量传给iframeNodeList.src。。所以考虑直接在loadviwe事件中赋给页面一个this.data变量然后对iframe进行跨域通信可不可行。。或者是否有别的方面能解决我参数要传递给ifarame跳转的内容管理文档的需求?


代码如下:
显示文本中赋予该按钮类

视图列打开文档脚本配置:

var iframeNodeList = this.target.view.app.formNode.querySelectorAll('iframe')
if(iframeNodeList.length==1){
    iframeNodeList.src = 'http://'+this.target.view.app.desktop.centerServer.host+':'+this.target.view.app.desktop.centerServer.port+'/x_desktop/app.html?app=cms.Document&status={"documentId":"'+this.target.data.id+'","readonly":true,"autoSave":false,"saveOnClose":false,"appId":"cms.Document'+this.target.data.id+'"}&hideOperationBar=true&hideCommend=false';

statement组件loadview事件中绑定的该按钮点击事件




论坛管理员 发表于 2024-11-13 09:42:23

要么直接绑定在window上
页: [1]
查看完整版本: iframe跨域通信