javascript - 如何打开新选项卡并在新选项卡上运行脚本后立即关闭它

标签 javascript jquery dom google-chrome-extension phantomjs

我对 Javascript 和编程相当陌生,一直在尝试制作一个 chrome 扩展来监控用户在特定网站上查看的任何产品的价格,并在价格发生变化时通知用户。我正在抓取 DOM 来获取价格。 我希望扩展程序每 5 小时访问一次页面并抓取 DOM 并更新价格。

我认为可以帮助我做到这一点的两种方法是使用 PhantomJs或者让我的扩展程序使用保存的 URL 打开一个新选项卡,运行脚本来抓取并立即关闭它。

如何采用新标签方式或 Phantom 方式进行操作?

我尝试过 window.open(url, '_blank') 并设置超时但没有帮助。 尝试使用 iframe 但无法访问框架中的文档。

如果我没有遵守提问准则,请原谅。这是我的第一次。

最佳答案

假设内容不是动态加载的,我认为您不必打开新选项卡来执行此操作。我只需发出一个 HTTP get 请求来接收要抓取的页面的 HTML。这可以使用纯 JavaScript 来完成

function httpGet(theUrl)
{
    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", theUrl, false );
    xmlHttp.send( null );
    return xmlHttp.responseText;
}

或者使用 jQuery

$.get(
    "somepage.php",
    {paramOne : 1, paramX : 'abc'},
    function(data) {
       alert('page content: ' + data);
    }
);

收到回复后,您可以使用 jQuery.parseHTML或者类似的东西,将其转换为 DOM 节点数组,您可以根据需要进行抓取。

关于javascript - 如何打开新选项卡并在新选项卡上运行脚本后立即关闭它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24937616/

相关文章:

javascript - 单元测试 Angular 属性指令

javascript - 为 jquerys.load() 准备参数

jquery - 在 jQuery Mobile 对话框/弹出窗口/面板后面启用文本选择

javascript - 某个单词返回后退出计时,调用setInterval()函数

javascript - 添加 data-ajax ="false"后退按钮不起作用

javascript - 为什么在过滤器中使用 if 语句而不是仅返回时会得到不同的输出

javascript - 为什么tsconfig需要编译Javascript文件Angular

javascript - jQuery,图像在悬停时改变

javascript - 在 Windows 8 Javascript 应用程序中将 XML 的字符串表示形式转换为 XML DOM 对象

javascript - 使用 jQuery,当单击最近的单选按钮时尝试检索图像 src 值