Chrome扩展桌面通知采用单独的HTML格式

时间:2011-02-12 06:48:52

标签: google-chrome-extension

<html>
    <head>
    <script src="http://code.jquery.com/jquery-1.4.2.js"></script>
    <script>
       chrome.browserAction.onClicked.addListener(function(tab) {
       var xhr = new XMLHttpRequest();
       xhr.onreadystatechange = function() {
              if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                var $ajaxData =  xhr.responseText;  
                var hidden = document.createElement ( 'div' );
                hidden.id = 'hiddenel';
                $("body").append ( hidden );
                $("#hiddenel").html ($ajaxData);
                var $aa = $("#hiddenel").find('div .somediv');

                var notification = webkitNotifications.createNotification(
                                    'some msg',
                                    'some msg',
                                     $aa.html());
                notification.show();

                } else {
                 alert("Unable to connect...");
                }
              }
            }
            var url = some url;;
            xhr.open('GET', url, true);
            xhr.send();
      });
    </script>
    </head>
</html>

现在在这个桌面通知中我得到一个带有tags的html。我想删除那些标签,我想用html页面替换$ aa.html。 但是,如果我将此脚本放在另一个HTML中,那么如何进行通信以及我必须在清单中进行哪些更改?

1 个答案:

答案 0 :(得分:6)

传递数据的最简单方法就是使用url参数:

webkitNotifications.createHTMLNotification('notification.html?data=' + escape(data)).show(); 

然后在接收端我只使用jQuery URL Parser plugin来解析url参数。

PS。看看你的代码,我建议将jquery.js放入扩展文件夹并改为包含它,这样它的加载速度会快得多。

此外,如果这段代码的唯一目的:

var hidden = document.createElement ( 'div' );
hidden.id = 'hiddenel';
$("body").append ( hidden );
$("#hiddenel").html ($ajaxData);

只是为了能够运行$("#hiddenel").find('div .somediv');,然后你可以用以下内容重写所有内容:

var $aa = $($ajaxData).find('div .somediv');