在javascript bookmarklet中创建关闭我链接的问题

时间:2015-10-29 01:09:07

标签: javascript html bookmarklet

我正在尝试为此功能添加一个close me链接。这样做的方法是,将所有这些代码粘贴到书签中而不添加换行符,书签会在屏幕上显示一个蓝色框。

到目前为止,我所创建的close me链接是我创建的“eleCloseLink”节点:

javascript:(
  function(){

var pagebody = document.evaluate( '/html/body' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
if (pagebody != null) {
  var node = document.createElement("DIV");
   node.style.position="fixed";
   node.style.color="white";
   node.style.background="blue";
   node.style.width="350px";
   node.style.top="50px";
   node.innerHTML = "<br>BLUE BOX<br>2<br>";

   var box = pagebody.appendChild(node);

   /* Creating close link here */
   var eleCloseLink = document.createElement("a");
   eleCloseLink.setAttribute('href', 'javascript:( function(){ node.parentNode.removeChild(node); })();');
   eleCloseLink.innerHTML = 'close me';
   box.appendChild(eleCloseLink);

}

})();

到目前为止,我已经尝试过这10种不同的方式,但没有一种方法成功。最近的方法是将javascript:( function(){ node.parentNode.removeChild(node); })();放在a中,这也不起作用。我觉得这应该是最常见的代码之一,因为我经常在网站上看到它们,因此应该有很多信息。我的场景可能比大多数b / c更具体,我创建的框只是一个DIV元素,我本质上是试图删除DIV元素(我也试过使用它)和我的关闭链接。如果有人对如何建立这个关闭我的链接有任何建议,请告诉我。

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我创建了一个click事件监听器,它调用了一个删除对象的函数。为此,我在我试图删除的DIV对象中添加了 id 属性。触发click事件时,close函数将使用 id 属性引用XPATH来评估div对象。然后我就能在该对象上运行remove()方法。

结束片段:

   /*Create Link in box to close box*/
   var eleCloseLink = document.createElement("a");

   eleCloseLink.innerHTML = '|CLOSE|';
   eleCloseLink.addEventListener("click", CloseBox, false);
   eleCloseLink.background = 'red';
   box.appendChild(eleCloseLink);
 }

 /*Function to close the box */
 function CloseBox() {
    document.evaluate( "//*[@id='thebox']" ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.remove(this);
 }

仍然不完全确定我是否必须在remove()方法中使用“this”,因为我在对象本身上调用了remove()方法。然而,这现在正在发挥作用。