将 javascript 块附加到 DOM 在生产中会失败 - 但在开发中不会

发布于 2024-07-13 12:11:30 字数 689 浏览 9 评论 0原文

我有一个 ASP.NET 网站。 非常巨大!

我所做的最新补充是,一切都启用了 JavaScript/AJAX。

我将 HTML 和 JavaScript 代码从服务器发送回客户端,客户端将 HTML 注入到 DIV 中 - 并使用以下方式将 JavaScript 注入 DOM:

$('<script type="text/javascript">' + script + '</sc' + 'ript>').appendTo(document);

或这样:

var js = document.createElement("script");
js.setAttribute("type", "text/javascript");
js.text = script;
document.appendChild(js);

在我自己的开发计算机上,注入的 javascript 是可访问的,并且我能够执行注入的 JavaScript 函数。

当我部署到我的测试环境时,)我们有一个内部域名,例如 www.testenv.com)我收到 JavaScript 错误。

我尝试将问题隔离到一个小页面中,在其中注入alert(“sfdfdf”); 在页面底部,效果很好。

是否有任何政策设置禁止这样做?

I have an ASP.NET website. Very huge!

The latest addition I've made, everything is JavaScript/AJAX enabled.

I send HTML and JavaScript code back from the server to the client, and the client will inject the HTML into a DIV - and inject the JavaScript into the DOM using this:

$('<script type="text/javascript">' + script + '</sc' + 'ript>').appendTo(document);

or this:

var js = document.createElement("script");
js.setAttribute("type", "text/javascript");
js.text = script;
document.appendChild(js);

On my own dev machine, the injected javascript is accessible and I'm able to execute injected JavaScript functions.

When I deploy to my test environment, )we have an internal domain name such as www.testenv.com) I get JavaScript errors.

I've tried to isolate the problem into a small page, where I inject alert("sfdfdf"); at the bottom of the page, and that works fine.

Is there any policy settings that prohibits this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

埖埖迣鎅 2024-07-20 12:11:30

不要将Child附加到“文档”; <脚本> 不能去那里,根据 DOM Level 1 Core 规范,你应该得到一个 HIERARCHY_REQUEST_ERR DOMException 。 唯一可以进入 Document 对象的子列表的元素是单个根 documentElement,。

而是将脚本附加到文档内的元素,例如 。

Don't appendChild to 'document'; <script> can't go there and you should get a HIERARCHY_REQUEST_ERR DOMException according to the DOM Level 1 Core spec. The only element that can go in the Document object's child list is the single root documentElement, <html>.

Instead append the script to an element inside the document, such as the <body>.

宛菡 2024-07-20 12:11:30

动态创建元素应该可以正常工作,脚本将在插入 DOM 时执行。 具体回答您的问题,没有直接的策略设置禁止脚本注入,但是,如果您在动态插入的脚本中使用 ajax 调用,则可能会遇到跨域限制。

如果您可以发布错误,也许您插入的“脚本”元素的来源将有助于调试问题:)

Dynamically creating elements should work fine, the script will be executed upon insertion into the DOM. To answer your question specifically, there are no direct policy settings that prohibit script injection, however, if you're using ajax calls within the dynamically inserted script you could run into Cross-Domain restrictions.

If you could post the error, and maybe the source of the 'script' element you're inserting it would help to debug the problem :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文