Javascript 附加<;脚本>;标签到身体?
我想在HTML页面的主体中附加一个脚本标记。我在我的页面中添加了以下内容:Javascript 附加<;脚本>;标签到身体?,javascript,jquery,html,Javascript,Jquery,Html,我想在HTML页面的主体中附加一个脚本标记。我在我的页面中添加了以下内容: <script type="text/javascript"> function loadScript() { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://maps.googleapis.c
<script type="text/javascript">
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?sensor=false&' +
'callback=initialize';
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
是什么原因导致此错误?如何防止此错误?
编辑:删除text/javascript类型不会改变任何内容
我试着在JSFidle中运行它,没有问题
不对。在JSFIDLE上,您有一个不同的问题
在这里,当文档加载事件触发时,您可以运行代码。该代码定义了一个函数,并为文档加载事件分配了一个事件处理程序。由于该事件已经触发,因此该函数永远不会运行。您不会得到错误,因为在独立文档中进行测试时,代码没有达到它所能达到的程度
当我在演示服务器上运行的html页面上运行它时,控制台中出现以下错误:
在这种情况下,代码正在成功运行
加载事件触发。loadScript函数将运行。脚本元素被追加到页面中。谷歌的脚本运行
因为您说:
因此,您从Google请求的脚本试图调用initialize()
,但您尚未定义该函数,因此您会得到一个错误
另请参见包含此示例的:
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644)
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
}
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp' +
'&signed_in=true&callback=initialize';
document.body.appendChild(script);
}
window.onload = loadScript;
您遇到的错误是因为没有
initialize()
函数。如果您声明一个,则不会出现错误
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize';
document.body.appendChild(script);
console.log('loadScript');
}
function initialize() {
console.log('initialize');
}
window.onload = loadScript;
在JSFIDLE中,您可以选择JS在
onLoad
上运行,这实际上使您的代码在'window.onLoad'之后执行,因此永远不会调用loadScript()
函数删除类型text/javascript
,并尝试将其改为loadScript()
。你有loadScript
@RobScott-不,绝对没有。它正在将函数分配给事件处理程序属性。是否尝试了一些setTimeout
?
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644)
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
}
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp' +
'&signed_in=true&callback=initialize';
document.body.appendChild(script);
}
window.onload = loadScript;
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize';
document.body.appendChild(script);
console.log('loadScript');
}
function initialize() {
console.log('initialize');
}
window.onload = loadScript;