«Javascript:» протокол uri заменяет всю страницу текстом

1

Итак, я пытался создать javascript: ссылку с некоторым кодом вроде a="foo". Я попытался использовать javascript:a="foo" но это не сработало. Вместо того, чтобы сменить var a на "foo" он по какой-то причине заменяет всю страницу foo как document.write.

Я также пробовал кодировать URI, но ни javascript:a%3D%22foo%22 ни javascript:%61%3D%22%66%6F%6F%22 работают.

Так как вызывающие функции, такие как javascript:alert("Hello World!"), Я запускал javascript:a=String("foo"), даже не повезло. Использование javascript:var%20a="foo" действительно работает, а также javascript:a=123, но это не сработает для меня, потому что моя конечная цель - изменить свойство в объекте.

Есть ли способ избежать этого?

  • 0
    Кроме того, javascript:a=String.fromCharCode(102,111,111) делает то же самое.
Теги:
uri

1 ответ

1
Лучший ответ

Установка переменных внутри встроенных атрибутов DOM не является хорошей практикой, но если вам нужно:

<a href="javascript: void(a='foo')">Link</a>

или же

<a href="javascript: void(0)" onclick="a='foo'">Link</a>
  • 0
    Спасибо вам большое! Я не использовал гиперссылки, но void() работает.
  • 0
    А ну понятно. Когда выражение внутри протокола javascript: возвращает строку, оно печатает строку, но void всегда возвращает undefined . Вот почему var работал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню