开发者社区> 问答> 正文

宜搭js里获取不到页面dom元素了

js部分window.document.getElementById("frame_iframe_l1arecd3")
但是获取不到这个元素,打印出来是null,但是zhiq之前还正常运行,就这两天报的错
image.png
image.png

展开
收起
游客nykki565vgypc 2023-11-17 13:25:49 239 1
来自:钉钉宜搭
4 条回答
写回答
取消 提交回答
  • 这个问题可能是由于你的JavaScript代码运行在了不同的上下文环境中。在宜搭中,如果你的JavaScript代码直接写在HTML代码中,那么它会运行在HTML的上下文环境中,这时你需要使用document而不是window来获取DOM元素。另外,如果你的JavaScript代码是在一个独立的文件中,并通过

    2023-11-18 09:28:43
    赞同 展开评论 打赏
  • 如果你有权访问服务器上的HTML文件,请将子框架的内容放在与主框架相同的域名下。这样就可以绕过浏览器的安全策略,从而让你的JavaScript代码访问子框架中的DOM元素。

    使用postMessage API。这是一种安全的方式,用于在不同窗口之间进行通信。首先,在发送方(子框架)调用postMessage函数并向目标窗口传递消息;然后,在接收方(主框架)监听message事件,以便当消息到达时执行相应的处理程序。

    2023-11-17 16:28:24
    赞同 展开评论 打赏
  • 若回答对您有帮助,记得点下赞同哦~

    你好可以参考一下下例代码获取iframe里面的链接地址:js
    var src = document.getElementById('frame_iframe_lp27itby');
    var srcValue = src.getAttribute("src");
    console.log(srcValue,'srcValue');
    image.png
    image.png

    2023-11-17 14:13:02
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    有可能是因为DOM还没有完全加载完成,所以在JavaScript代码运行的时候,id为“frame_iframe_l1arecd3”的元素还没出现。你可以试试把这段js放在DOMContentLoaded事件里,或者是onload事件里,等DOM加载完成后再去取这个元素:

    document.addEventListener('DOMContentLoaded', function() {
        console.log(document.getElementById("frame_iframe_l1arecd3"));
    });
    

    还有可能是浏览器的安全策略禁止跨域操作,需要使用postMessage或者其他的方式去操作iframe里面的元素。

    document.getElementById('iframe_id').contentWindow.postMessage(message, '*');
    
    2023-11-17 13:36:18
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
「宜搭」是云钉原生低代码平台(钉钉 PaaS - aPaaS),让企业应用搭建更简单! 帮助中小企业降本提效,加强组织的数字化自主权; 帮助大型企业释放个体创新力,助力组织创新涌现。
相关文档: 宜搭
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载