Bookmarklet, чтобы открыть новое окно, перенаправляет текущее окно в [Object Window]? - PullRequest
11 голосов
/ 17 марта 2011

Я использую небольшой букмарклет, который открывает веб-страницу в новом окне. На хром работает нормально.

Однако, когда я использую то же самое в Firefox, он открывает новое окно с новой веб-страницей, но страница, на которой был нажат этот букмарклет, перенаправляется на некоторую страницу с текстом [object Window]. Как мне решить эту проблему?

Мой код:

<a href="javascript:open('http://www.google.com','targetname','height=500,width=500');">Bookmarklet</a>

Пожалуйста, дайте мне знать, как решить эту проблему.

Спасибо

Ответы [ 2 ]

16 голосов
/ 24 марта 2011

Вы должны «съесть» последнее возвращаемое значение в URL-адресе JavaScript, возвращая что-либо typeof returnValue != 'undefined' будет эквивалентно вызову document.write(returnValue)window.open возвращает вновь созданный window объект, отсюда вывод «[Window объекта]».Конечно, вы можете сделать это, бездумно добавив оператор void(0), но это ТАК неуклюже.Версия без магии (возвращаемое значение съедено, вызывающее окно оставлено без изменений):

javascript:void(open('http://www.google.com','targetname','height=500,width=500'))

Скорее всего, вы расширите свой букмарклет, поэтому, чтобы избежать загромождения глобальной области видимости, вам лучше пойти по анонимной функции (обратите вниманиеотсутствие оператора return):

javascript:(function(){open('http://www.google.com','targetname','height=500,width=500');/* more code to go */})()
1 голос
/ 17 марта 2011

Попробуйте этот код, я добавил "void (0);"чтобы остановить родительское окно, удались после нажатия.

<a href="javascript:open('http://www.google.com','targetname','height=500,width=500');void(0);" >Bookmarklet </a>
...