2015-06-26 13 views
5

İçerik script'i history.pushState ve ajax çağrısı ile değiştirilen sayfaya eklerken sorunla karşılaştım. Stackoverflow'ta similar topic'u buldum, ancak bu çözüm benim için çalışmıyor (bu çözüm chrome.webNavigation.onHistoryStateUpdated ve "popstate" olayının kullanımıydı). i başka bir sayfaya gidin eğer ben sırayla aynı sayfaya defalarca gezinmek eğersayfa history.pushState ve ajax çağrısı ile değiştirildiği zaman içerik komut dosyası ekleyiniz

"content_scripts": [ 
    { 
     "matches": ["https://vk.com/audios*", "https://vk.com/al_audio.php*"], 
     "js": ["jquery-2.1.4.min.js", "getListOfSongs.js"] 
    } 
    ] 

chrome.webNavigation.onHistoryStateUpdated, çalışır hiçbir şey olmaz: Burada

benim manifestin bir parçasıdır . Örneğin: ajax - https://vk.com/audios * git) ajax arama

3 - - açılış sayfası ilk defa veya yeniden) https://vk.com/some_other_page git

1) https://vk.com/audios * git zaman çalışır açılış sayfası ilk defa veya

yüklenmesi -

1) https://vk.com/audios * git zaman çalışmıyor

çağrı

2) Yine https://vk.com/audios * gidin - böylece enjekte ve olmayan bu nokta İçerik komut de, ajax arama - https://vk.com/audios * gitmek Yine)
3 enjekte edilmez bu nokta İçerik komut de, ajax arama

i aşağıdaki istek üzerine ikinci kez ve bu yüzden aynı sayfaya tıklayarak ediyorum her zaman oluşturuyor:

https://vk.com/al_audio.php?__query=audios ********* & _ref = left_nav & _smt = ses% 3A2 & al = -1 & al_id = ******** & _rndVer = 60742

Ayrıca JQuery .ajaxComplete bu durumda herhangi bir etkinliği yakalamak değil (istek parametreleri değişebilir).

Ve pushState "popstate" olayı değildir, bu yüzden chrome.webNavigation.onCompleted ve chrome.webNavigation.onDOMContentLoaded kullanabilir i window.onpopstate olayı

kullanamazsınız, ancak Sayfayı yeniden yükle, bu olaylar bir kez daha gerçekleşiyor, bu yüzden komut dosyası bir kereden fazla enjekte edilecek.

Bu dava için en iyi çözüm hangisidir?

+0

_ "Ben benzer bir konu stackoverflow'ta bulundu, fakat bu çözüm benim için işe yaramıyor. ”Bunu daha iyi açıklamanız gerekecek. – Xan

+1

Tüm gönderide açıkladım. Chrome.webNavigation kullanımı.onHistoryStateUpdated ve popstate olay bu konuyla de çözüm olarak önerilmiştir, ama bu çözüm yukarıda belirttiğimiz benim için çalışmaz. –

+0

Bulduğun çözüme bağlanabilir misin? – Xan

cevap

İlgili konular