2015-10-16 1 views
0
var location = document.location; 

Это первая строка сценария содержимого моего расширения chrome, которая вызывает перезагрузку страницы. . Это ожидаемое поведение? Я не мог найти упоминания об этом в документации.Почему перезагрузка страницы при использовании document.location в скрипте содержимого расширения chrome?

ответ

4

Если вы находитесь в глобальном масштабе (и у меня есть догадка), то нет локальных переменных, а var ничего не делает. Таким образом, location равен this.location, а this == window ... вы можете видеть, что это происходит. Попробуйте в консоли: var location = "http://example.com"; или, для менее наглядного примера, var foo = 17; console.log(window.foo);

(Примечание: я не уверен на 100%, так как это было некоторое время, когда я написал расширение Chrome и не знаю, факт, что вы находитесь в глобальном контексте, но это единственное объяснение, которое соответствует фактам, о которых я могу думать.)

Чтобы исправить это, измените имя своей переменной или, еще лучше, внесите неглобальный контекст; например .:

(function() { 
    var location = window.location; // does not blow up 
})(); 

или что то же самое

function pleaseDontBlowUp() { 
    var location = window.location; // does not blow up 
} 
pleaseDontBlowUp();