2015-11-05 64 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);