Я создаю веб-виджет, который будет очень легко интегрировать. Скажем, http://www.bicycleseller.com/
хочет разместить мой виджет на своей веб-странице. Все, что ему нужно сделать, это скопировать и вставить следующее в заголовок своей страницы:
<script src="http://www.widgetprovider.com/widget.js" type="text/javascript"></script>
<script>
Widget.create("123456accessKeyOfBicycleSeller").render("myWidget");
</script>
и <div id="myWidget"></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
в widget.js
является синглтоном. Если я не сделаю его одноэлементным, то не смогу разместить атрибут onclick
изображения (Widget.display()
). Что я для этого делаю?
Требуется помощь по трем вопросам. Любая помощь будет оценена. Спасибо.