橙色闪光
2018-04-09 13:44
采纳率: 25%
浏览 4.6k

chrome扩展如何模拟点击特定网页中的超链接?

楼主想利用chrome插件来自动点击某网页XXX.html中的连接,其中的连接形式如下:

<a class="item" href="/pageContent.htm"><img src="pic.jpg" title="全国地图" alt="全国地图" class=""></a>

楼主自己写了个插件小demo,但是跑不成功,具体manifest.json文件如下所示:

  "browser_action": {
      "default_icon": "icon/wuzang.png",
      "default_popup": "popup.html"
   },
    "permissions": [    
          "tabs", "http://*/*","https://*/*"     
     ],    
   "content_scripts": [ {
      "js": [ "jquery-1.7.2.min.js", "contentJs.js" ],
      "matches": [ "http://XXX.html]
   } ],
   "default_locale": "en",
   "description": "demo",
   "manifest_version": 2,
   "name": "demo",
   "version": "0.10"

ContentJs文件如下所示:

 function toMap(){
    console.debug("toMap")
    //选中该连接的url
    mapHref = $("#a").attr("href")
    alert(mapHref)
    if(mapHref == undefined) return;
    else goToLink(mapHref)
}

function goToLink(href){
    location.href = href;
    return;
}

function toMap2(){
    console.debug("toMap")
    map = $("a");
    map.click();
}




setInterval(toMap2(),5000)
setInterval(toMap(),5000)

这样写完了之后,页面只在刷新重新加载的时候弹出了tomap()方法中的alert提示框,显示undefined,请问有大神知道为什么这样做行不通吗

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 已采纳

    setInterval需要函数句柄,
    setInterval(toMap2(),5000)
    setInterval(toMap(),5000)
    你这里是执行函数将返回值作为setInterval的执行的句柄了,所以只会输出一次,改下面的
    setInterval(toMap2,5000)
    setInterval(toMap,5000)

    还有mapHref = $("#a").attr("href")这句,你的是a标签,又不是id为a的控件,改为标签选择器,而不是id选择器
    mapHref = $("a").attr("href")

    点赞 评论

相关推荐 更多相似问题