插入元件I在外部JavaScript文件創建的元素。
但是我需要在腳本標記之後追加它 - 就像document.write()
會這樣做。參照由文件撰寫
我不能使用類和id的腳本和元素本身 - 我不在我的網站上,並可能有多個這些腳本。
如何解決這樣的任務?
背景:我想要構建一些可以在其他網站上使用的小部件。
插入元件I在外部JavaScript文件創建的元素。
但是我需要在腳本標記之後追加它 - 就像document.write()
會這樣做。參照由文件撰寫
我不能使用類和id的腳本和元素本身 - 我不在我的網站上,並可能有多個這些腳本。
如何解決這樣的任務?
背景:我想要構建一些可以在其他網站上使用的小部件。
如何:
if(typeof globalScriptCounter === "undefined")
var globalScriptCounter = 1;
else
globalScriptCounter++;
var scripts = document.getElementsByTagName("script");
var localCounter = 0;
for(var i = 0; i < scripts.length; i++) {
if(scripts[i].src === "yourwidget.js") { // You should know the path since it is your widget
localCounter++;
if(globalScriptCounter === localCounter) {
document.body.insertBefore(element, scripts[i]);
break;
}
}
編輯:我編輯我的代碼。試試看!
你救了我的生活!經過一些小的修正後,我結束了我的代碼 - 見下文。 – czerasz 2012-03-28 13:03:07
太棒了,我喜歡它,你如何拿起我的想法。做得好! – Amberlamps 2012-03-28 13:33:44
只有創建元素是不夠的。使用document.body.insertBefore,document.body.appendChild和其他函數將其添加到頁面元素列表中。
樣本功能
function addElement()
{
// create a new div element
// and give it some content
newDiv = document.createElement("div");
newContent = document.createTextNode("Hi there and greetings!");
newDiv.appendChild(newContent); //add the text node to the newly created div.
// add the newly created element and it's content into the DOM
my_div = document.getElementById("org_div1");
document.body.insertBefore(newDiv, my_div);
}
編號:from mozilla
...我不能使用類和id的腳本和元素本身 - 我不在我的網站上,並可能有多個腳本.... – czerasz 2012-03-28 11:33:18
我結束了與此源:
定義爲我的框架(我認爲有公平):
myNamespace-widget-script
類
小部件腳本:
!function() {
//-->BEGIN GET WIDGET INDIVIDUAL ID
var localWidgetCounter = 0;
if (_.isUndefined(myNamespace)) {
myNamespace = {}
}
if (_.isUndefined(myNamespace.widgetsCounter)) {
myNamespace.widgetsCounter = 0;
} else {
localWidgetCounter = myNamespace.widgetsCounter += 1;
}
//-->END GET WIDGET INDIVIDUAL ID
$.domReady(function() {
var teaser = ...here i generate my html DOM elements...
teaser.insertAfter($('.myNamespace-widget-script')[localWidgetCounter]);
});
}.call({});
爲什麼不讓用戶決定放置這些小部件的位置? – 2012-03-28 11:20:58
他們通過包含腳本標記來決定將其放置在何處。就像youtube使用iframe嵌入代碼一樣。不幸的是,我不能使用iframe。 – czerasz 2012-03-28 11:31:01