動態加載Mui類庫:
// ==UserScript== // @name // @version 1.4.0 // @author zzdhidden@gmail.com // @namespace https://github.com/zzdhidden // @description 異步加載mui類庫 // @include // @require // ==/UserScript== function withMUI(callback, safe){ if(typeof(mui) == "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "${resModel.getJsDomain()}/communal/static/js/mui.js"; if(safe) { var cb = document.createElement("script"); cb.type = "text/javascript"; cb.textContent = "(" + callback.toString() + ")(mui, window);"; script.addEventListener('load', function() { document.head.appendChild(cb); }); } else { var dollar = undefined; if(typeof($) != "undefined") dollar = $; script.addEventListener('load', function() { $ = dollar; callback(mui, window); }); } document.head.appendChild(script); } else { setTimeout(function() { //Firefox supports callback(mui, typeof unsafeWindow === "undefined" ? window : unsafeWindow); }, 30); } } withMUI(function($, window){ $(function() { //在此就可以執行執行你的代碼了 })(); }, true);
核心是要script的load事件完成后執行代碼才有效。
動態加載jquery:
// ==UserScript== // @name 12306 Booking Assistant // @version 1.4.0 // @author zzdhidden@gmail.com // @namespace https://github.com/zzdhidden // @description 12306 訂票助手之(自動登錄,自動查票,自動訂單) // @include *://dynamic.12306.cn/otsweb/* // @require https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js // ==/UserScript== function withjQuery(callback, safe){ if(typeof(jQuery) == "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"; if(safe) { var cb = document.createElement("script"); cb.type = "text/javascript"; cb.textContent = "jQuery.noConflict();(" + callback.toString() + ")(jQuery, window);"; script.addEventListener('load', function() { document.head.appendChild(cb); }); } else { var dollar = undefined; if(typeof($) != "undefined") dollar = $; script.addEventListener('load', function() { jQuery.noConflict(); $ = dollar; callback(jQuery, window); }); } document.head.appendChild(script); } else { setTimeout(function() { //Firefox supports callback(jQuery, typeof unsafeWindow === "undefined" ? window : unsafeWindow); }, 30); } } withjQuery(function($, window){ $(function() { alert("jQuery loaded"); })(); }, true);