我需要将一个外部javascript文件添加到网站的<head>
部分 - 一个文件在Staging服务器上,另一个文件用于生产。
到目前为止,我有这个,但我收到了一个错误:&#39;返回&#39;功能之外
<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>
我错过了什么?
感谢。
答案 0 :(得分:1)
这个代码放在哪里?你确定路径是正确的吗? 将js文件添加到head中的另一种方法是这种方法:
<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>
答案 1 :(得分:1)
返回 - 指定函数返回的值。
这意味着您从浏览器获得的错误是正确的。您的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();
对我来说,除非你只想停止脚本执行,否则你还不清楚要返回什么;来自MDN:
如果省略return [expression]中的表达式,则返回undefined。
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
注意:请检查为什么使用typeof
语句比使用简单的!
标记更安全来检查是否存在某些内容:Check if object exists in JavaScript。
编辑:对于return语句的一个非常简单的用例,你可以查看this fiddle I made,它基本上是一个计数器,当它达到100时会输出错误。
答案 2 :(得分:0)
<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>
要动态加载脚本,您可以试试这个..
javascript错误“函数外部的return语句”意味着您已经创建了一个不允许存在于函数定义之外的代码片段。