2015-11-05 92 views
0

我正在開發這個迷你chrome擴展,我在其中插入一個按鈕(鏈接)到一個頁面並點擊它(以編程方式)將帶來模式。即使使用相同的jQuery命令,也可以從控制檯單擊它。但是當我從腳本文件本身執行它時,它只是重新加載當前頁面,因爲鏈接顯然是頁面的當前url,因爲模式應該在頁面頂部打開。手動點擊鼠標也可以。但我不知道爲什麼點擊從文件本身的鏈接只是重新加載頁面而不打開模式。jQuery點擊模式不起作用

chrome.runtime.onMessage.addListener(function(res,sender,sender){ 
 
\t var fileurl = chrome.extension.getURL("modal.js") 
 

 
\t var html = "<a href="#" data-modal="#modal2" class="modal__trigger">Modal </a>....the rest of html here'; 
 

 
\t $('#rightCol').prepend(html); 
 
\t var script = document.createElement('script'); 
 
\t script.type = 'text/javascript'; 
 
\t script.src = fileurl; 
 
\t $("head").append(script); 
 
\t 
 
\t $('.modal__trigger')[0].click(); //this click reload the current page without opening up the modal 
 
\t 
 
});

+0

你需要修復您的引號 - '變種HTML ='Modal。 ...其餘的html在這裏';' – Und3rTow

+0

另外注入的腳本需要一些時間來處理,所以也許增加一個超時befor點擊或使用'script.onload'或'dispatchEvent'而不是'click()' – wOxxOm

+0

@wOxxOm你真是該死的! ''setTimeut'''函數等待2秒,現在它正在工作。謝謝您的幫助! – Zip

回答

0

注入腳本需要一些時間來解析和執行。

  • 點擊

    setTimeout(function() { $('.modal__trigger')[0].click() }, 1000); 
    
  • 前添加一個超時或使用script.onload事件

    script.onload = function() { $('.modal__trigger')[0].click() }; 
    $("head").append(script);