Javascript 无法从firefox插件捕获google搜索标题

Javascript 无法从firefox插件捕获google搜索标题,javascript,firefox,firefox-addon,crossrider,Javascript,Firefox,Firefox Addon,Crossrider,我正在使用crossrider开发一个firefox插件,它可以捕获url和标题。当尝试从浏览器中捕获标题和url时,插件工作正常。这个插件可以很好地从谷歌搜索中捕获url,但它可以捕获上一个标题并显示出来。同样的代码在chrome中也能正常工作。请参考下面给出的代码: var capture_data = { title : "not defined", desc: "not defined", url : "not defined",

我正在使用crossrider开发一个firefox插件,它可以捕获url和标题。当尝试从浏览器中捕获标题和url时,插件工作正常。这个插件可以很好地从谷歌搜索中捕获url,但它可以捕获上一个标题并显示出来。同样的代码在chrome中也能正常工作。请参考下面给出的代码:

 var capture_data = {

       title : "not defined",
       desc: "not defined",
       url : "not defined",


       get_info : function(){

          this.url = document.location.href;
          this.title = document.title;
          console.log("Url: "+this.url+"   Title:"+this.title)

      }
 }


 window.onhashchange = function(){ 
    console.log(window.location.hash);
    capture_data.get_info();

 }       

请给我一个解决方案

我测试了提供的代码,可以重现您遇到的问题

在更新页面标题之前调用onhashchange事件处理程序似乎很简单。通过在获取标题之前引入一个短暂的延迟来解决这个问题,如下面的代码所示

window.onhashchange = function(){ 
  console.log(window.location.hash);
  setTimeout(function() {capture_data.get_info();}, 1000);
}

[披露:我是一名Crossrider员工]

我测试了提供的代码,可以重现您遇到的问题

在更新页面标题之前调用onhashchange事件处理程序似乎很简单。通过在获取标题之前引入一个短暂的延迟来解决这个问题,如下面的代码所示

window.onhashchange = function(){ 
  console.log(window.location.hash);
  setTimeout(function() {capture_data.get_info();}, 1000);
}

[披露:我是一名Crossrider员工]

我测试了提供的代码,可以重现您遇到的问题

在更新页面标题之前调用onhashchange事件处理程序似乎很简单。通过在获取标题之前引入一个短暂的延迟来解决这个问题,如下面的代码所示

window.onhashchange = function(){ 
  console.log(window.location.hash);
  setTimeout(function() {capture_data.get_info();}, 1000);
}

[披露:我是一名Crossrider员工]

我测试了提供的代码,可以重现您遇到的问题

在更新页面标题之前调用onhashchange事件处理程序似乎很简单。通过在获取标题之前引入一个短暂的延迟来解决这个问题,如下面的代码所示

window.onhashchange = function(){ 
  console.log(window.location.hash);
  setTimeout(function() {capture_data.get_info();}, 1000);
}

[披露:我是一名Crossrider员工]

如果在页面标题更新之前触发onhaschange,您可以尝试使用变异观察者来避免设置超时

您将观看
title
元素的
childNode

所以试试这个:

window.onhashchange = function() {
    console.log(window.location.hash);
    var title = document.querySelector('title');

    var mobs = new window.MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            console.log(mutation.type, mutation);
            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
                console.log('nodes added');

            }
        });
    });
    mobs.observe(title, {
        childList: true,
        subtree: true
    });

}

未经测试,但应该会让您走得更远,只需查看
控制台.log
s,您就可以缩小它的范围以满足您的需要。

如果在页面标题更新之前触发onhaschange,您可以尝试使用变异观察程序来避免设置超时

您将观看
title
元素的
childNode

所以试试这个:

window.onhashchange = function() {
    console.log(window.location.hash);
    var title = document.querySelector('title');

    var mobs = new window.MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            console.log(mutation.type, mutation);
            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
                console.log('nodes added');

            }
        });
    });
    mobs.observe(title, {
        childList: true,
        subtree: true
    });

}

未经测试,但应该会让您走得更远,只需查看
控制台.log
s,您就可以缩小它的范围以满足您的需要。

如果在页面标题更新之前触发onhaschange,您可以尝试使用变异观察程序来避免设置超时

您将观看
title
元素的
childNode

所以试试这个:

window.onhashchange = function() {
    console.log(window.location.hash);
    var title = document.querySelector('title');

    var mobs = new window.MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            console.log(mutation.type, mutation);
            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
                console.log('nodes added');

            }
        });
    });
    mobs.observe(title, {
        childList: true,
        subtree: true
    });

}

未经测试,但应该会让您走得更远,只需查看
控制台.log
s,您就可以缩小它的范围以满足您的需要。

如果在页面标题更新之前触发onhaschange,您可以尝试使用变异观察程序来避免设置超时

您将观看
title
元素的
childNode

所以试试这个:

window.onhashchange = function() {
    console.log(window.location.hash);
    var title = document.querySelector('title');

    var mobs = new window.MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            console.log(mutation.type, mutation);
            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
                console.log('nodes added');

            }
        });
    });
    mobs.observe(title, {
        childList: true,
        subtree: true
    });

}

未经测试,但应该会让你走得很远,只需要观看
控制台。日志
s,你就可以缩小范围来做你需要的事情。

非常感谢你。我以前试过这个,请让我知道它在任何情况下是否失败,因为谷歌搜索非常快。非常感谢你。我以前试过这个,请让我知道它是否在任何情况下失败,因为谷歌搜索非常快速谢谢你这么多…,我以前试过这个,请让我知道它是否在任何情况下失败,因为谷歌搜索非常快速谢谢你这么多…,我以前试过这个,请让我知道它是否在任何情况下失败,因为谷歌搜索非常快速谢谢你这么多,它在firefox上运行得很好,但在chrome上不起作用。谢谢你让我知道我没有测试它,所以这是个好消息。其他浏览器中的突变观察者实现可能有点不同,但我不确定有多不同。非常感谢,它在firefox上运行得很好,但在chrome上运行得不好。感谢你让我知道我没有测试它,所以这是个好消息。其他浏览器中的突变观察者实现可能有点不同,但我不确定有多不同。非常感谢,它在firefox上运行得很好,但在chrome上运行得不好。感谢你让我知道我没有测试它,所以这是个好消息。其他浏览器中的突变观察者实现可能有点不同,但我不确定有多不同。非常感谢,它在firefox上运行得很好,但在chrome上运行得不好。感谢你让我知道我没有测试它,所以这是个好消息。其他浏览器中的变异观察者实现可能有点不同,但我不确定有多不同。