Javascript - 使用 <script> 标签包含另一个脚本
Javascript - include another script by using the <script> tag?
所以我有一个将字符串写入div的函数。该字符串被声明为内容,它由 html 代码组成,如下所示:
<h2>This is a test result</h2>
<script type="text/javascript" src="example_content.js"></script>
<script type="text/javascript"> document.write(example_content); </script>
其中example_content.js :
example_content = '<p>some text some text some text some text some text</p>'
+ '<p>some more text....</p>'
+ '<hr />'
+ '<p>End of text</p>';
问题是,而不是在div 中得到这个:
<h2>This is a test result</h2>
<p>some text some text some text some text some text</p>
<p>some more text....</p>
<hr />
<p>End of Text</p>
从字面上看,我最终是这样的:
<h2>This is a test result/h2>
<script type="text/javascript" src="example_content.js"></script>
<script type="text/javascript"> document.write(example_content); </script>
有没有办法避免将脚本标签写成字符串? 而是作为实际脚本?
提前感谢您的任何帮助:)
那样做。您无法添加脚本标记并通过编写 HTML 来执行它们。如果必须动态加载脚本,则应将它们添加到 DOM 中。您可以尝试这样做来加载外部脚本文件并执行该方法。
(function(document){
var s = document.createElement('script');
s.id = "external_content";
s.async = true;
s.src = "example_content.js";
document.getElementsByTagName('head')[0].appendChild(s);
s.onload = function() {
document.write(example_content);
}
}(document));
它基本上做的是动态创建一个新的脚本元素并将其添加到 DOM 中。它还设置了一个 onload
事件处理程序,该处理程序将在脚本完全下载后触发。
由于措辞的原因,我不确定这个问题,但是您不需要两个<script>
标签。在example_content.js
末尾放置document.write(example_content);
然后从 html 文件中删除<script type="text/javascript"> document.write(example_content); </script>
。
另外,如果这是您想要的,我建议您使用object.innerHTML
而不是document.write,并将脚本放在页面底部。
如果这不起作用或不是您想要的,请发表评论,我将删除并使用 JSLint 作为示例。
以下是一些信息: https://developer.mozilla.org/en-US/docs/DOM/element.innerHTML
基本上你想在你的div的内容中编写HTML。 假设你有一个具有以下 id 的div:myContentDiv
/**
* NOTICE HOW IM USING ' before " TO ESCAPE THE CHARACTERS INSIDE THE HTML STRING
*/
var yourCustomHTMLString = "<h1>this is a tag</h1><div class='"yourClass'">something</div>";
var contentDiv = document.getElementById('myContentDiv');
contentDiv.innerHTML = yourCustomHTMLString;
此外,在标记中,您需要为 JS 指定一个触发器,例如 onload 触发器。
window.onload = function(){
document.write(example_content);
}
现在假设你想要一个将 HTML 字符串加载到div 中的函数。
function loadContent(HTMLstring, targetDivID)
{
var myDiv = document.getElementById(targetDivID);
myDiv.innerHTML = HTMLstring;
}
如果你试图在另一个JS脚本中包含JS脚本,你需要Ajax。如果您使用的是JS库,则所有常见的库都预定义了脚本加载方法。
动态加载 JavaScript 文件
如果我理解正确,您将内容作为innerHTML插入到<div>
中,并且脚本不会执行。
据我所知,这是预期的行为,因为当您更改元素的 innerHTML 时,没有 onLoad、document.ready 等事件。
您可以分析<script>
节点的插入字符串。警告,这是一件非常"黑客"的事情,通常有更好的方法,例如使用各种脚本库的 ajax 函数的成功回调。
尽管如此,这是我们曾经使用过的。这需要在插入内容字符串后执行。请不要评判我,我还年轻,时间不多了...
var div = document.getElementById("yourParentDiv");
if(div != null){
var x = div.getElementsByTagName("script");
for(var i=0;i<x.length;i++) {
eval(x[i].text);
}
}