异步加载脚本

Load script async?

本文关键字:脚本 加载 异步      更新时间:2023-09-26

编辑:我想将表单中的输入数据保存到Firebase数据库

id="field0"的输入和带onClick"submitPost()" 的按钮

<form>
<input id="field0" name="ePost" type="text" value="">
<button type="submit" class="btn" onclick="submitPost()">Submit</button>
</form>

无法将firebase.js放入头部。所以就这样解决了。如果我将这些片段一个接一个地添加到控制台中,它似乎可以工作。但是当我同时在控制台中加载它们时,会出现一个错误。

var script   = document.createElement("script");
script.type  = "text/javascript";
script.src   = "https://cdn.firebase.com/v0/firebase.js";
document.head.appendChild(script);
var myDataRef = new Firebase('https://eloquatest.firebaseio.com/');
myDataRef.on('child_added', function(snapshot) {
var post = snapshot.val();
});
function submitPost(e) {
var myDataRef = new Firebase('https://eloquatest.firebaseio.com/');
var name = $('#field0').val();
myDataRef.push({name: name});
$('#field0').val('');
}

下面是上面的例子:https://jsfiddle.net/hbaecklund/7mnns4dk/5/

我需要异步加载脚本才能工作吗?但下面不起作用?

$.ajax({
  url: 'https://cdn.firebase.com/v0/firebase.js',
  dataType: 'script',
  cache: true,
  success: function() {  
    var myDataRef = new Firebase('https://eloquatest.firebaseio.com/');
    myDataRef.on('child_added', function(snapshot) {
    var post = snapshot.val();
    });
    function submitPost(e) {
    var myDataRef = new Firebase('https://eloquatest.firebaseio.com/');
    var name = $('#field0').val();
    myDataRef.push({name: name});
    $('#field0').val('');
    };    
  }
});

使用脚本标记的加载事件来尝试此操作:https://jsfiddle.net/7mnns4dk/6/

基本上只是使用:

script.load = function() {
  // enter code that needs the script to be loaded here
}

此外,它在编写jQuery时也可以使用,只需移动submitPost函数,即可通过按钮访问:https://jsfiddle.net/7mnns4dk/7/