我正在構建一個將很容易集成的web小部件。假設http://www.bicycleseller.com/
想將我的小部件整合到他的網頁上。他所要做的就是複製並粘貼以下到他的網頁的頭部分:在主體部分構建小部件時隱藏Javascript
<script src="http://www.widgetprovider.com/widget.js" type="text/javascript"></script>
<script>
Widget.create("123456accessKeyOfBicycleSeller").render("myWidget");
</script>
和<div id="myWidget"></div>
到任何地方。小部件將顯示在該div中。
我作爲控件提供者,主辦widget.js:
var Widget = new function() {
this.url = "www.widgetprovider.com/widget.jsp";
this.name = "";
this.parameters = "width=400,height=200,screenX=750,screenY=300,resizable=0";
this.create = function (accessKey) {
this.accessKey = accessKey;
return this;
};
this.render = function (divId) {
// make sure the document is fully loaded and place the widget on BicycleSellers page.
// when the widget (a jpeg) is clicked, a jsp page I host will popup.
window.onload = function() {
document.getElementById(divId).innerHTML = '<img src="images/widget-image.jpg" onclick="Widget.display()"/>';
};
return this;
};
this.display = function() {
// open a popup window that displays a page I host.
var popup = window.open(this.url + "?accessKey=" + this.accessKey, this.name, this.parameters);
popup.focus();
return this;
};
};
因此,BicycleSeller把他的頁面上的小部件,當他的用戶點擊它,則會彈出,顯示他們內容來自我主持的網頁。 但是,每個想要嵌入我的小部件的網站管理員必須提供accessKey
,這對他們來說是唯一的,因爲彈出窗口的內容將取決於此。
我的問題是:
1)在這種情況下,誰去bicycleseller.com
並查看HTML源代碼可以看到他accessKey
這是硬編碼在頭部。然後他們可以導航到www.widgetprovider.com/widget.jsp?accessKey=123456
。我不希望這種情況發生。關於這個還能做什麼?例如;我在看Facebook的來源,他們似乎很好地隱藏了一切。
2)這是繼續構建小部件的好方法嗎?我想的是一個燈箱,而不是一個彈出式窗口(可能會被彈出式窗口攔截器攔截 - 儘管在這個例子中它沒有)。歡迎任何意見/建議。
3)如果我嘗試放置到窗口小部件並寫入Widget.create("key1").render("div1"); Widget.create("key2").render("div2");
,則會生成兩張圖像。但點擊後,兩個彈出窗口都會顯示key1
的信息。這是因爲widget.js
中的Widget
類是單例。如果我沒有將它變成單身人士,那麼我不能放置圖像的onclick
屬性(Widget.display()
)。我該怎麼做?
尋求三個問題的幫助。任何幫助將不勝感激。謝謝。
@HovercraftFullOfEels - 彈出窗口顯示一個JSP頁面。正如人們可能會提出一個包含JSP/Servlet /等的解決方案,我添加了Java標記。 –
JGWeissman的答案解決了第三個問題。但我仍然在尋找第一和第二個更多的答案...爲什麼這個問題沒有得到更多的觀點與這樣的流行標籤和一個直接的問題? –
放入評論標籤,非常好地詢問他們不要看代碼。 以前認爲你可以發送數據給某人並期望他們沒有它是完全愚蠢和不合理的。 即使像檢查「引用者」標題那樣完全無足輕重的廢話,它根本無關緊要。你已經發送了數據,它已經消失了,它已經出現在你的用戶系統中。 如果您的用戶無法查看代碼是有原因的,那麼您的系統基本上存在缺陷,您需要對其進行更改。 – Incognito