Я пишу расширение для firefox. Используя dom.location для отслеживания посещенных страниц результатов поиска, я получаю этот url http://www.google.com/search?hl=en&source=hp&q=hi&aq=f&aqi=&oq=&fp=642c18fb4411ca2e. Если вы нажмете на него, результаты поиска google для «hi» должны появиться. Вы узнаете это из строки заголовка - потому что остальная часть страницы не будет загружаться. Это происходит с любым поиском google. Как ни странно, если вы отрезаете часть его, так скажите, http://www.google.com/search?hl=en&source=hp&q=hi - это работает! Но Googling «привет» сам мне дает длинный URL-адрес - http://www.google.com/#hl=en&source=hp&q=hi&aq=f&aqi=&oq=&fp=db658cc5049dc510. Я знаю, что в первый раз, когда URL-адрес был посещен, страница загружена, я сделал это сам.Неправильный URL-адрес Firefox?
Может ли кто-нибудь объяснить причину?
Я только что попробовал свой эксперимент, на этот раз сохраняя исходный URL-адрес в строке местоположения. Оказывается, dom.location.href дает другое значение. Как это происходит?
Оригинал:
http://www.google.com/#hl=en&source=hp&q=hi&aq=f&aqi=&oq=&fp=642c18fb4411ca2e
dom.location.href
http://www.google.com/search?hl=en&source=hp&q=hi&aq=f&aqi=&oq=&fp=642c18fb4411ca2e
window.addEventListener("load", function() { myExtension.init(); }, false);
var myExtension = {
init: function() {
var appcontent = document.getElementById("appcontent"); // browser
if(appcontent)
appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
var messagepane = document.getElementById("messagepane"); // mail
if(messagepane)
messagepane.addEventListener("load", function() { myExtension.onPageLoad(); }, true);
},
onPageLoad: function(aEvent) {
var doc = aEvent.originalTarget; // doc is document that triggered "onload" event
// do something with the loaded page.
// doc.location is a Location object (see below for a link).
// You can use it to make your code executed on certain pages only.
var url = doc.location.href;
if (url.match(/(?:p|q)(?:=)([^%]*)/)) {alert("MATCH" + url);resultsPages.push(url);} else {alert(url);
}
}
Этот фрагмент кода происходит непосредственно из Mozilla с согласования и предупреждения моих собственных. Прошу прощения за то, что ранее не отправлял код.
Мой ответ стоит даже после вашего редактирования. Вероятно, вы получите событие загрузки для фрейма внутри основного документа в дополнение к событию загрузки для основного документа. Googling должен найти способ отличить два - это faq. – Nickolay
Я продолжу исследовать это самостоятельно, как и я, но я не вижу, как это может быть проблемой. Я пробовал каждый зарегистрированный URL. Я понимаю, что один из них является «ложным» url - фреймом, но я не вижу, как ни один из них не может привлечь меня к поиску. –
Вы проверили, что правильный URL-адрес не фильтруется вашим регулярным выражением? – Nickolay