这是从UserVoice剪下的代码,以便将他们的标签粘贴在我的网站上(这不是UserVoice特有的,但是,我一直看到这种事情):
<script type="text/javascript">
var uservoiceJsHost = ("https:" == document.location.protocol) ? "https://uservoice.com" : "http://cdn.uservoice.com";
document.write(unescape("%3Cscript src='" + uservoiceJsHost + "/javascripts/widgets/tab.js' type='text/javascript'%3E%3C/script%3E"))
</script>
<script type="text/javascript">
UserVoice.Tab.show({
key: 'wikipediamaze',
host: 'wikipediamaze.uservoice.com',
forum: 'general',
alignment: 'right', /* 'left', 'right' */
background_color: '#94C97B',
text_color: 'white', /* 'white', 'black' */
hover_color: '#7AA1C5',
lang: 'en' /* 'en', 'de', 'nl', 'es', 'fr' */
})
</script>
如何将这些都塞进一个脚本标签并放入单独的文件中?任何时候我尝试这样做,它都行不通。谷歌广告做同样的事情。为什么有2个单独的脚本声明?
答案 0 :(得分:10)
查看第一个脚本标记中的代码,它正在向页面写入另一个脚本标记。第二个脚本标记中的代码使用的是由编写的脚本标记加载的文件中的函数,因此它必须位于单独的标记中,因为在第一个代码执行之前文件未加载。
您可以将脚本放在单独的文件中,但仍需要使用两个单独的脚本标记加载它们,因为第一个必须在第二个脚本加载之前执行。
答案 1 :(得分:0)
JavaScript在加载时会被执行,因此页面上脚本的位置可能具有一定的重要性。这实际上取决于页面和脚本。
此外,Web组件和库通常都有自己的脚本,因此如果页面上有许多组件,则它们可能都有各自脚本的单独脚本标记。
答案 2 :(得分:0)
在这种情况下,至少对我而言,它只是读得更好。第一个脚本标记是从其服务器动态加载脚本。第二个脚本标签实际上正在完成工作。把第一个想象成一种动态的做法<script src=""/>
,你可能会这样理解为什么会这样。