2

我需要在一个页面中加载 3 个 jquery 脚本。出于商业原因,我必须尽可能减少修改,因此我决定创建一个 javascript 以包含在网站中。

之后,这个脚本必须加载 jQuery 以及除了 3 个 css 文件之外的另外 3 个 jquery 脚本。

基本上,直到现在,这就是我所拥有的:

var jquery = document.createElement('script');
jquery.type = "text/javascript";
jquery.src = "common/com/jquery/jquery-1.9.1.js";
document.getElementsByTagName('head')[0].appendChild(jquery,document.getElementsByTagName('head')[0].firstChild);

var prettyPhoto = document.createElement('script');
prettyPhoto.type = "text/javascript";
prettyPhoto.src = "common/com/prettyPhoto/jquery.prettyPhoto.js";
document.getElementsByTagName('head')[0].appendChild(prettyPhoto,document.getElementsByTagName('head')[0].firstChild);

var jqueryui = document.createElement('script');
jqueryui.type = "text/javascript";
jqueryui.src = "common/com/jqueryui/jquery-ui.js";
document.getElementsByTagName('head')[0].appendChild(jqueryui,document.getElementsByTagName('head')[0].firstChild);

var kohlerApp = document.createElement('script');
kohlerApp.type = "text/javascript";
kohlerApp.src = "common/js/lelak.js";
document.getElementsByTagName('head')[0].appendChild(kohlerApp,document.getElementsByTagName('head')[0].firstChild);

var style = document.createElement("link");
style.type = "text/css";
style.href = "common/css/style.css";
style.rel = "stylesheet";
document.getElementsByTagName('head')[0].appendChild(style,document.getElementsByTagName('head')[0].firstChild);

var jqueryui = document.createElement("link");
jqueryui.type = "text/css";
jqueryui.href = "common/css/jquery-ui.css";
jqueryui.rel = "stylesheet";
document.getElementsByTagName('head')[0].appendChild(jqueryui,document.getElementsByTagName('head')[0].firstChild);

var prettyPhoto = document.createElement("link");
prettyPhoto.type = "text/css";
prettyPhoto.href = "common/css/prettyPhoto.css";
prettyPhoto.rel = "stylesheet";
document.getElementsByTagName('head')[0].appendChild(prettyPhoto,document.getElementsByTagName('head')[0].firstChild);

lelakApp.giveError("0","test");

我正在尝试执行包含在其中一个脚本中的 jquery 函数之一,但没有成功。返回以下错误:

Uncaught ReferenceError: lelakApp is not defined 

lelakApp来自我的脚本)

我如何加载 jQuery 和个人 Jquery 脚本并从该个人脚本加载函数?


编辑

我正在尝试使用requireJs执行一个简单的 jquery 请求

define(["../com/jquery/jquery-1.9.1"], function($) {
$('body').html('');
});

但我收到此错误:

Uncaught TypeError: undefined is not a function
4

2 回答 2

3

I would think this is because you dont know whether the script has loaded or not at the time you try to use the function.

You could try adding an onload event handler to the script tags and only start using the scripts once they are all loaded.

Take a look at require.js either to use or for ideas : http://requirejs.org/

require(["helper/util"], function(util) {
    //This function is called when scripts/helper/util.js is loaded.
    //If util.js calls define(), then this function is not fired until
    //util's dependencies have loaded, and the util argument will hold
    //the module value for "helper/util".
});
于 2013-04-25T12:16:47.013 回答
3

在使用lelakApp. 我建议您使用require.js动态加载脚本。

为了在没有require.js的情况下执行此操作,您可以执行以下操作:

script.onload = script.onreadystatechange = function () {
    'use strict';

    if (script.readyState === 'complete') {
        // ...
    }
}

注意:我对浏览器兼容性一无所知。

于 2013-04-25T12:17:28.270 回答