在Chrome扩展程序中使用qTip显示注释

时间:2014-04-28 16:30:05

标签: javascript jquery google-chrome google-chrome-extension qtip

我正在构建Chrome扩展程序以在任何网站上注释文本。到目前为止,它需要在基本的Javascript提示窗口中输入,并在警告框中将其显示在.onmouseover上。但是,我想使用qTip2 jQuery插件而不是使用警告框。

以下是我的manifest.json目前的情况:

"content_scripts": [{"matches": ["http://*/*", "https://*/*"],
                      "js": ["content.js", "jquery-1.3.2.min.js", "jquery.qtip.min.js"],
                      "run_at": "document_start",
                      "all_frames": true
                    }],

以下是获取注释并显示它的代码段:

    function surroundSelection() {
    var span = document.createElement("span");
    span.style.backgroundColor="yellow";

    //prompt box to enter annotation
    var text = prompt("Enter annotation below:");

    //shows the annotated text on mouseover
    span.onmouseover=function(){
    alert(text);
}

    if (document.getSelection()) {
        var sel = document.getSelection();
        if (sel.rangeCount) {
            var range = sel.getRangeAt(0).cloneRange();
            range.surroundContents(span);
            sel.removeAllRanges();
            sel.addRange(range);
        }
    }
}

我已经查看了一些qTip2的实例,它们都以下列方式处理类或ID之类的HTML属性:

$(document).ready(function() 
{
   // Match all link elements with href attributes within the content div
   $('#content a[href]').qtip(
   {
      content: 'Some basic content for the tooltip' // Give it some content, in this case a simple string
   });
});

我的问题是如何让qTip处理我的注释?

1 个答案:

答案 0 :(得分:1)

由于你的span对象是一个DOM元素,你可能只是

$(span).qtip({
     "key1": value1,
     "key2": value2,
          ...
     "keyN": valueN
});

range.surroundContents(span);之后而不是.onmouseover行,只要你的jQuery和qTip2引用已经有效。

您可以将DOM元素传递给jQuery,以获取该元素as shown in the documentation的jQuery对象。 qTip示例只需要插入有效的jQuery对象。

大多数情况下人们会选择这样做,但是可能没有理由你没有

  1. 实例化DOM元素
  2. 坚持在页面上,
  3. 为它获取一个jQuery对象,
  4. 并将其传递给qTip。