[英]Import javascript dynamically with jQuery?
我正在嘗試使用jQuery設置小部件框架,因此我需要通過解析小部件的xhtml並將其包含在框架頁面中來導入Java腳本。 問題在於,這可能導致名稱空間受到污染。 是否可以在運行時將Java腳本加載到名稱空間中?
也許有一些更好的方法被我忽略了?
謝謝,皮特
你可以做這樣的事情...
var myOtherFramework = null;
$.get("myScript.js", function(data) {
myOtherFramework = eval("(" + data + ")");
});
然后像引用...
myOtherFramework.funcName();
正如Josh Stodola提到的,在運行時創建變量不是問題
var holdsWidgetUUID = "widgetUUIDValue";
eval(holdsWidgetUUID + "= (" + data + ")");
alert(eval(holdsWidgetUUID));
或者,如果您願意
var UUID = "widgetUUID";
var holdsWidgetUUID = "widgetUUIDValue";
window["widgets"] = new Array();
window["widgets"][holdsWidgetUUID] = data;
alert(window["widgets"][holdsWidgetUUID]);
問題是讓加載的javascript可以像dynamicvariablename.methodname()一樣被調用
如果您對隨附的javascript進行某種編碼實踐,則我有一個可行的解決方案。 也許這會使您朝着正確的方向前進。
這是一個小部件javascript(works.js)。 請注意,這是具有內部定義的字段和方法的javascript“類”。 它本身使名稱空間污染保持較低,並允許我們實現所需的調用形式x.getInfo()
function () {
this.type = 1;
this.color = "red";
this.getInfo = function() {
return this.color + ' ' + this.type + ' widget';
};
}
這是在運行時將其包含在名稱空間中的文件
<html>
<head>
<title>Widget Magic?</title>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
var UUID = "widgetUUID";
var holdsWidgetUUID = "widgetUUIDValue";
window["widgets"] = new Array();
$.get("works.js", function(data) {
window["widgets"][holdsWidgetUUID] = eval("(" + data + ")");
$(document).ready(function() {
window["widgets"][holdsWidgetUUID] = new (window["widgets"][holdsWidgetUUID])();
alert(window["widgets"][holdsWidgetUUID].color);
alert(window["widgets"][holdsWidgetUUID].getInfo());
});
});
</script>
</head>
<body>
<p>Just some stuff</p>
</body>
</html>
您加載的javascript本身應該已經在使用唯一的名稱空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.