JavaScript和ID冲突中的网站管理员小工具

时间:2011-08-04 11:43:50

标签: javascript html

我想创建一个可放置在其他网站/论坛中的小部件。

<script type="text/javascript" src="http://example.com/x.js" />
<div id="myid"></div>

但是有一个问题 - 当有人在一个网站上放置两个或更多这样的小部件时,由于ID而无法正常工作。

我该怎样做才能防止这种情况发生?

我不能使用类,因为我需要从JS访问这个div。 我想在ID的末尾添加一个随机生成的数字,但仍然存在ID冲突的可能性(很小,但会有)。

2 个答案:

答案 0 :(得分:1)

最好的方法是更灵活。因此,您应该提供一种让用户选择其ID的方法,而不是使用已定义的html id并强制用户拥有它。因此,必须进行通话。

这样的事情更干净:

<script type="text/javascript" src="http://example.com/x.js"></script>
<script type="text/javascript">
    X.callMethod("myId");
</script>
<div id="myid"></div>

这种方法有两个好处:

  • 它允许用户定义自己的ID
  • 用户从脚本中指定他想要的行为。有了这个,您可以添加其他可以以相同方式使用的方法:用户不会觉得您的代码是侵入性的,是他决定是否需要某个功能。

答案 1 :(得分:0)

您可以只包含脚本...在处理时生成div并为其分配唯一ID。 (在该逻辑中,您可以检查重复项)

假设您不希望您的小部件被包含在1,000次中......这样的事情(未经测试)应该有效。

var uniqueID;
var foundUniqueID = false;
var idx = 0;
while(foundUniqueID != true){
  uniqueID = 'myID_' + idx;
  if(document.getElementById(uniqueID)){
    idx++;
  } else {
    foundUniqueID = true;
  }
}
//create your DIV with your uniqueID etc.