gpt4 book ai didi

javascript - 在 Javascript 中打印 Javascript?

转载 作者:行者123 更新时间:2023-11-28 08:53:33 25 4
gpt4 key购买 nike

我正在为一个软件制作一个插件,通过使用 JavaScript 检查页面大小,然后将相关广告代码输出到屏幕上,该软件基本上可以让您拥有“响应式”广告。

这对于文字广告代码来说效果很好,但是当广告代码是 JavaScript 时我遇到了障碍 - 我无法将用户提供的 JavaScript 输出到页面并执行。

这可能吗?

这里是一些示例代码:

<div id="admanagerresponsive">
<script type="text/javascript">
adUnit = document.getElementById("admanagerresponsive");
adWidth = adUnit.offsetWidth;

if (adWidth >= 728) {
<output ad code>
}
</script>
</div>

上面的代码将直接在页面中。

这样的事可能吗?

编辑:

可以是任何广告客户的代码,例如 adsense。它将由用户提供,并且将是标准的 html。但是,它可能包含标签,并且需要正确渲染和输出这些标签......

最佳答案

如果您确实需要注入(inject),请添加包含 script 的 html 代码标签,并且您被授予安全问题,我建议使用像 jQuery 这样的库,它可以处理执行 <script> 时的跨浏览器问题。稍后添加的标签。

此外,您需要注意各种陷阱,例如:
html解析是在脚本解析之前完成的,所以无论</script>在哪里看起来这将立即结束您的脚本。

对于在 html 页面中将该代码作为内联脚本的情况,这些示例非常重要。

示例 1:

<script>
adUnit = document.getElementById("admanagerresponsive");
adWidth = adUnit.offsetWidth;if (adWidth >= 728) {
// if you add </script> <b>this is visible as html</b> and everything below is not script anymore
}
</script>

示例 2:

<script>
adUnit = document.getElementById("admanagerresponsive");
adWidth = adUnit.offsetWidth;if (adWidth >= 728) {
var string = "<script> var test;</script>";//the same problem here everything behind the closing script tag is html and not script anymore
}
</script>

因此,如果您需要在那里注入(inject)一些脚本,您需要制作 </script> html 解析器无法检测到:

<script>
adUnit = document.getElementById("admanagerresponsive");
adWidth = adUnit.offsetWidth;if (adWidth >= 728) {
var string = "<script> var test;</sc"+"ript>";//that way the html parser does not detect the closing script tag
}
</script>

更好的解决方案是根本不使用内联脚本,不仅因为这个原因,而且因为你应该始终将 css、js 和 html 分开。

关于javascript - 在 Javascript 中打印 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18803917/

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