2016-08-03 11 views
0

私は最初のクロムエクステンションを開発しています。 そして、信号R2を実装してクロム通知を表示しました。 問題があるのは、ある時間拡張がidolであると通知が表示されなくなり、その間にbackground.jsをデバッグすると(拡張の背景ページを開くことによって)通知が表示されてしまうことです。ここで通知を表示するためにクロムエクステンションをリロードする必要があります

は、それがnotificationHubProxyとそのとともに、一度実行された後、私の信号Rの実装

[HttpGet] 
    public void SendNotificationYealink(string mac, string ip, string model, string active_url, string active_user, string active_host, string local, string remote, string display_local, string display_remote, string call_id, string action) 
    { 
     var context = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>(); 
     context.Clients.All.addNotificationToExtension("Arslan", "Active_User =" + active_user + 
      ", Local =" + local + ", Remote =" + remote + ", Display_Local =" + display_local + ", Display_Remote =" + display_remote + ", Call Id=" + call_id); 
    } 

そして私のbackground.js

$(function() { 

var connection = $.hubConnection(); 
connection.url = 'http://localhost:8089/signalr'; 
var notificationHubProxy = connection.createHubProxy('notificationHub'); 
notificationHubProxy.on('addNotificationToExtension', function (callFrom, phoneNumber) { 

    var firstRun = 
     { 
      type: "basic", 
      title: callFrom, 
      message: phoneNumber, 
      iconUrl: "icon.png" 
     } 
    chrome.notifications.create(firstRun); 
}); 

connection.start().done(function() { 
    console.log('Connection established.'); 
}); 
}) 
+0

バックグラウンドページに「永続的」:falseを使用していますか?削除してください。 – wOxxOm

+0

いいえ、私はすでにそれを削除しました。 –

+0

ラッパー( '$(function(){...})を削除しようとすると、拡張機能のバックグラウンドページ内でゼロの目的を果たします。 – wOxxOm

答えて

0

は明らかに、クロージャ内の変数が破壊されていますイベントリスナー。

コードの周囲にある($(function() { ... })()ラッパーを削除すると、独自の独立した環境で実行されるため、拡張機能のバックグラウンドページ内で目的を果たさないため、誰からも変数を隠す必要はありません。このオフのチャンスで

が初期化されている背景ページのDOMを確保する方法であり、あなたが実際に単に終了 </body>タグの前に、あなたの <script src="background.js"></script> background.htmlの最後に移動し、その内部のDOM要素を持っています。

+0

私のためにうまくいきました。 –

関連する問題