Javascript 将外部文件添加到头部-一个用于暂存,一个用于生产
我需要将一个外部javascript文件添加到网站的Javascript 将外部文件添加到头部-一个用于暂存,一个用于生产,javascript,Javascript,我需要将一个外部javascript文件添加到网站的部分-一个文件在登台服务器上,另一个文件用于生产 到目前为止,我有这个,但我得到一个错误:“return”在函数外部 <script type="text/javascript"> var pathOrigin = window.location.origin; var headtg = document.getElementsByTagName('head')[0]; if (!headtg) {
部分-一个文件在登台服务器上,另一个文件用于生产
到目前为止,我有这个,但我得到一个错误:“return”在函数外部
<script type="text/javascript">
var pathOrigin = window.location.origin;
var headtg = document.getElementsByTagName('head')[0];
if (!headtg) {
return;
}
var linktg = document.createElement('script');
if (pathOrigin.toLowerCase().indexOf("staging.server.com") >= 0) {
linktg.src = '/script-staging.js';
} else {
linktg.src = '/script-production.js';
}
headtg.appendChild(linktg);
</script>
var pathrigin=window.location.origin;
var headtg=document.getElementsByTagName('head')[0];
如果(!headtg){
返回;
}
var linktg=document.createElement('script');
if(pathOrigin.toLowerCase().indexOf(“staging.server.com”)>=0){
linktg.src='/script staging.js';
}否则{
linktg.src='/script production.js';
}
头、子(linktg);
我错过了什么
谢谢。此代码放在哪里?您确定路径正确吗? 将js文件添加到头部的另一种方法是:
<head>
....
<script type="text/javascript">
var pathOrigin = window.location.origin;
var path = "";
if (pathOrigin.toLowerCase().indexOf("staging.server.com") >= 0) {
path = '/script-staging.js';
} else {
path = '/script-production.js';
}
document.write( '<script type="text/javascript" src="' + path + '"><\/script>' );
</script>
.....
</head>
....
var pathrigin=window.location.origin;
var路径=”;
if(pathOrigin.toLowerCase().indexOf(“staging.server.com”)>=0){
path='/script staging.js';
}否则{
path='/script production.js';
}
文件。写(“”);
.....
Return-指定函数要返回的值
这意味着您从浏览器获得的错误是正确的。您的return
语句不是函数的一部分,而是全局范围的一部分。您必须跳过使用return
语句,使用@Azzy答案中的简单变量分配,或者将其封装在如下函数中:
function getHead() {
var headtg = document.getElementsByTagName('head')[0];
if (typeof headtg === 'undefined') {
return; // will break the function
} else {
var linktg = document.createElement('script');
if (pathOrigin.toLowerCase().indexOf("staging.server.com") >= 0) {
linktg.src = '/script-staging.js';
} else {
linktg.src = '/script-production.js';
}
headtg.appendChild(linktg);
};
};
getHead(); // don't forget to initialize the function
//or you could do:
element.onload/onclick/on<whatever_event> = getHead();
函数getHead(){
var headtg=document.getElementsByTagName('head')[0];
如果(headtg的类型==‘未定义’){
return;//将中断函数
}否则{
var linktg=document.createElement('script');
if(pathOrigin.toLowerCase().indexOf(“staging.server.com”)>=0){
linktg.src='/script staging.js';
}否则{
linktg.src='/script production.js';
}
头、子(linktg);
};
};
getHead();//不要忘记初始化函数
//或者你可以:
element.onload/onclick/on=getHead();
对我来说,还不清楚您想要返回什么,除非您只是想停止脚本执行;引用MDN:
如果省略返回[expression]中的表达式,则返回undefined
资料来源:
注意:请检查为什么使用typeof
语句比使用简单的语句更安全代码>标记以检查是否存在某些内容:
EDIT:对于return语句的一个非常简单的用例,您可以检查它基本上是一个计数器,当它达到100时,它将输出一个错误。
<html>
<head>
<script type='text/javascript'>
var path = window.location.origin
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
if (path == 'local'){
fileref.setAttribute("src", 'file:///D:/JS/jquery.js')
}
else{
fileref.setAttribute("src", 'file:///D:/JS/jquery.js')
}
document.getElementsByTagName("head")[0].appendChild(fileref)
//list all the js loaded dynamically
var scripts = document.getElementsByTagName('script');
console.log(scripts);
</script>
</head>
<body>
<p>test</p>
</body>
</html>
变量路径=window.location.origin
var fileref=document.createElement('脚本')
fileref.setAttribute(“类型”、“文本/javascript”)
如果(路径==“本地”){
fileref.setAttribute(“src”,”file:///D:/JS/jquery.js')
}
否则{
fileref.setAttribute(“src”,”file:///D:/JS/jquery.js')
}
document.getElementsByTagName(“head”)[0]。appendChild(fileref)
//列出所有动态加载的js
var scripts=document.getElementsByTagName('script');
console.log(脚本);
试验
要动态加载脚本,您可以尝试以下操作
javascript错误“函数外的返回语句”表示您创建了一个不允许存在于函数定义外的代码片段。使用此脚本,我在IE中遇到一个错误:无法获取未定义或空引用的属性“toLowerCase”,它显示“origin”IE中不支持。使用window.location.href它可以工作。我从您的代码中获取pathrigin。这里有一个解决办法:好的,谢谢。那么整个代码应该是什么样子呢?我仍然得到函数外的“return”语句。@Meek,这取决于如果head
标记不存在,您希望返回什么。如果它不存在,是否要附加它?(有点奇怪,因为通常每个HTML文档都有一个头
,但ok.)。是否要输出控制台错误?我想我希望脚本停止执行,尽管head不太可能存在。我更新了答案以包含完整代码。在本例中,您只需要return来中断代码,但在基于if-else子句为变量赋值时,最常用return。注意:函数getHead()
与var getHead=function()
相同,这就是为什么您必须在之后初始化它。谢谢您的时间。我将继续此内容。:-)