查看: 577|回复: 1

iframe跨域通信

升级   0.1%

136

主题

241

回帖

10

积分

注册会员

Rank: 2

积分
10
发表于 2024-11-11 08:58:37 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 szhtest 于 2024-11-11 09:52 编辑

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

需求:
          我在视图列里放置了一个自定义元素按钮(符合条件时才会出现),我在视图列的显示文本中给了这个按钮一个类,并且在statement组件的loadviwe事件中添加了该按钮的点击事件(通过class找到这个元素给它添加点击事件)。该按钮是html代码写的自定义元素,且视图列中还有其他内容,所以没有直接在视图列的click事件中写
          我想在点击事件中写一个x变量,当触发点击按钮时 x=1。现在我想把这个x变量的值传递给iframe打开的内容管理界面接收,我该怎么做?需要怎么传递,并且在对应的内容管理界面上接收到这个值呢?我对应的内容管理界面也需要获取传过来的x值写代码。

可是目前的打开网址iframeNodeList[0].src是写在打开文档脚本里的,我也不知能有什么办法将x变量传给iframeNodeList[0].src。。所以考虑直接在loadviwe事件中赋给页面一个this.data变量然后对iframe进行跨域通信可不可行。。或者是否有别的方面能解决我参数要传递给ifarame跳转的内容管理文档的需求?



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

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

[JavaScript] 纯文本查看 复制代码
var iframeNodeList = this.target.view.app.formNode.querySelectorAll('iframe')
if(iframeNodeList.length==1){
    iframeNodeList[0].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事件中绑定的该按钮点击事件




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2024-11-13 09:42:23 | 显示全部楼层
要么直接绑定在window上
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread