在 Javascript 中打印 Javascript
Print Javascript in Javascript?
我正在为一个软件制作一个插件,该软件基本上允许您使用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。但是,它可能包含标签,这些标签需要正确呈现和输出......
如果你真的需要注入添加包含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>
因此,如果您需要一些脚本来注入其中,则需要使</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分开。
把它分成两个想法。 从上面的 HTML 中,只需调用您在其他地方编写的 js 函数即可。 最初让 js 函数成为警报,以验证是否有效。
一旦工作,你就会遇到问题:如何为页面获取自定义 js? 答案是希望您可以像创建html文件一样创建和加载(一次性,自定义)js文件。 或者,像现在这样的图书馆.js可以提供帮助。 或者,您的 html 页面有一个脚本部分,您了解如何组装以包含 js。
您甚至可以预加载所有大小可能性,然后让第一段中的 js 例程选择要调用的正确例程,
- JavaScript打印功能使日历停止工作
- 如何用javascript打印php数组
- 打开抽屉的Javascript打印命令
- JavaScript-打印元素值
- 直接使用html5或javascript打印
- system.err风格的控制台以javascript打印
- 无法使用JavaScript打印带有for循环的验证错误
- 使用Javascript打印图像
- chrome在通过javascript打印时要求登录
- 在SharePoint中通过javascript打印
- JavaScript打印的数字有20位小数
- 使用Javascript打印HTML:未定义错误
- 使用javascript打印元素
- 使用 JavaScript 打印 PDF
- Javascript 打印多个网页 iFrame 内容(全部打印按钮)
- 如何使用嵌套循环使用 Javascript 打印到外部循环的输出中
- JavaScript:打印前 12 个月 - “March”打印两次
- Javascript:打印类属性
- 如何使用 javascript 打印带上划线的文本
- 通过 Javascript 打印在 IFrame 中加载的 PDF