gpt4 book ai didi

Javascript 无法从 html 中读取 div

转载 作者:行者123 更新时间:2023-12-05 04:26:42 26 4
gpt4 key购买 nike

我有一个连接到名为“old.html”的 html 的 javascript 代码。我在那里做事,然后我有另一个名为“new.html”的 html,我想在其中添加 html 元素。

我有这段代码,我在其中尝试分配 div q1variable myVar

    var printWindow = window.open("http://10.180.101.58:5500/new.html", 'Print');
var myVar = printWindow.document.getElementById('q1');

我的 html 看起来像这样:

<body>

<form>
<div id="q1"></div>
</form>

<script src="DemoCode.js"></script>
</body>

这 2 个文件在同一目录中,但我认为问题出在 window.open()

我做不到document.getElementById()因为我还有“old.html”,可以说这是连接到我的 javascript 的原始 html,每当我调用 document.getElementById() 时它从那个元素中获取元素。

有谁知道我可以从“new.html”中获取元素的方法吗?

我正在使用 <script src="DemoCode.js"></script>在两个 html 中,所以我可以说两者都连接到我的 javaScript。

最佳答案

这里有两个答案:

  1. 如果执行此操作的代码所在的窗口位于同一 origin 上( http://10.180.101.58:5500 ),您必须等待 DOM 在新窗口中加载(例如,使用 DOMContentLoaded 事件)才能访问它。

  2. 如果执行此操作的代码所在的窗口与您打开的新窗口在同一源上,那么您将无法访问它的 DOM,因为当然将是一个巨大的安全漏洞。

在第 1 种情况下,您可以这样做:

const printWindow = window.open("http://10.180.101.58:5500/new.html", "Print");
printWindow.addEventListener("DOMContentLoaded", () => {
const myVar = printWindow.document.getElementById("q1");
// ...use it here...
});

I am using <script src="DemoCode.js"></script> in both html's so I can say that both are connected to my javaScript.

这不会以任何方式连接窗口(想象一下所有将由从 CDN 加载的 jQuery 或 React 连接的窗口!)。它所做的只是将该文件中的代码加载到两个窗口中。

关于Javascript 无法从 html 中读取 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72976533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com