簡體   English   中英

在另一個包含的javascript中包含javascript

[英]including javascript in another included javascript

我正在使用JQuery.UI日期選擇器,但是需要進行一些更改才能更新插件小部件,然后才能在Web應用程序中實際使用它。 為了進行測試,我只需要使用常規標簽加載JQuery和datepicker庫,然后將修改后的代碼放入其自己的標簽中,最后,將datepicker的標簽以及初始化代碼放入另一個標簽中。 當只有一頁使用修改后的日期選擇器時,所有這些都有效。

現在,我想開始在多個頁面上使用修改后的數據,而不必在每個使用日期的地方都保留對datepicker的所有修改。 我想做的是為datepicker創建一個包裝文件,其中包括修改代碼和使用datepicker所需的include,然后在使用datepicker的頁面中,僅包含包裝腳本文件。

這全部歸結為在另一個包含的javascript文件中包含javascript文件。

我意識到這是其他一些問題的重復,但是當我嘗試了其他問題(如document.write和JQuery addScript技術)中的建議修復程序時,它們似乎不適用於Chrome 。 我遇到的第一個問題是addScript函數告訴我在JQuery庫中存在一個問題,該庫通常在主文件中帶有標記加載。 如果我注釋掉addScript,則不會發生錯誤。 document.write方法似乎正在運行,但隨后所有的datepickers都不起作用。

我想知道在另一個腳本加載中如何最好地加載該腳本,因此我可以創建包裝器,並且該解決方案需要在所有主流瀏覽器中都能正常工作。

所有這一切的麻煩之處在於,該過程必須適應使用PHP + Ajax創建的頁面,但是我首先要獲得一個純HTML + Javascript + JQuery + JQuery.UI Datepicker解決方案。

如果已經回答了這個問題,並且可以解決我在此處概述的限制,請向我指出該解決方案,請不要只說“重復問題”,而應該保留它。 我已經在該論壇和其他論壇上回顧了這些解決方案,並且看到了許多簡單而又復雜的解決方案,這些解決方案無法正常工作或導致正確的錯誤。

如果標記確實支持嵌套包含,那將非常非常地好,這一切都將變得更加容易,並且使用此概念來支持包裝器以隔離對基本庫對象的替代就是對象的全部目的。 因此,支持和CSS的健壯的跨瀏覽器技術確實過期了。 如果它在那里,那么我會想念它的,但是從我所看到的來看,它並不是以“准備好黃金時段”的方式出現的。

謝謝,霍華德·布朗

你嘗試過這樣的事情嗎?

var Loader = function () { }
Loader.prototype = {
    require: function (scripts, callback) {
        this.loadCount      = 0;
        this.totalRequired  = scripts.length;
        this.callback       = callback;

        for (var i = 0; i < scripts.length; i++) {
            this.writeScript(scripts[i]);
        }
    },
    loaded: function (evt) {
        this.loadCount++;

        if (this.loadCount == this.totalRequired && typeof this.callback == 'function') this.callback.call();
    },
    writeScript: function (src) {
        var self = this;
        var s = document.createElement('script');
        s.type = "text/javascript";
        s.async = true;
        s.src = src;
        s.addEventListener('load', function (e) { self.loaded(e); }, false);
        var head = document.getElementsByTagName('head')[0];
        head.appendChild(s);
    }
}

用法

var l = new Loader();
l.require([
    "example-script-1.js",
    "example-script-2.js"], 
    function() {
        // Callback
        console.log('All Scripts Loaded');
    });

您可以根據需要嵌套盡可能多的包含項(每個都包含在各自的回調中),它們仍然可以使用。

感謝CSS Tricks提供解決方案

我非常懷疑您會喜歡我的建議,但是ima無論如何都會嘗試

創建一個名為includes.php的文件

將所有內容放入文件

采用

<? include("includes.php"); ?>

需要的地方

這樣,您可以將所有腳本放在一個文件中,並用一行簡單的代碼將它們包含在您想要的頁面中

您可以在更改時使用git系統本地存儲庫,以便在需要時進行一些合並。 那就是我的建議。 分叉原始分支,然后添加您的更改。 這也稱為補丁文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM