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

Hec*_*ssa 2 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>
Run Code Online (Sandbox Code Playgroud)

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

ser*_*erg 6

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

webkitNotifications.createHTMLNotification('notification.html?data=' + escape(data)).show(); 
Run Code Online (Sandbox Code Playgroud)

然后在接收端我只使用jQuery URL Parser插件来解析url参数.

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

如果这段代码的唯一目的:

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

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

var $aa = $($ajaxData).find('div .somediv');
Run Code Online (Sandbox Code Playgroud)

  • createHTMLNotification()已经过折旧,不再有效. (2认同)