Javascript 附加<;脚本>;标签到身体?

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

我想在HTML页面的主体中附加一个脚本标记。我在我的页面中添加了以下内容:

<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;