В обычном js можно перебирать объект окна -
<html><head><script>
function one(){
}
function two(){
for (var i in window) {
if (i=='one') {
alert(i);//.......................shows 'one'
}
}
}
two();
</script></head></html>
Но в greasemonkey «окно» не содержит функций, даже функций, которые вы определили в скрипте GM:
// ==UserScript==
// @name Page 3
// @namespace http://xxxxxxxxxxxxxxxx
// @include http://xxxxxxxxx.net/3.html
// ==/UserScript==
//
function one(){
}
function two(){
for (var i in window) {
if (i=='one') {
alert(i);//.........shows nothing, only iterates native window props
}
}
}
two();
Да, я хочу повторить свои собственные функции, а не те, которые есть в unsafeWindow. Обратите внимание, что следующие работы, которые я не хочу делать:
window.one=function one(){
}
function two(){
for (var i in window) {
if (i=='one') {
alert(i);//...........ta-da! 'one'
}
}
}
two();
Итак, как называется это глобальное пространство, как его повторить, и каковы намерения и лучшие практики для этой аномалии? Спасибо.
Обновление: 'this' также не имеет доступа к функциям -
// ==UserScript==
// @name Page 3
// @namespace http://xxxxxxx.net
// @include http://xxxx.com/*
// ==/UserScript==
function do_fixes(){
var s='';
for (var i in this) {
if (i=='do_fixes') {
alert('yes');
}
}
if (window!=this) {
alert('window!=this');
}
}
do_fixes();
alert('this script ran!');