Как использовать встроенный JavaScript в HTML?
Поддержите, чтобы у меня было это скрытое поле:
<input type='hidden' id='handler' name='handler' value='5534882394' />
И представьте, что я получаю фрагмент HTML с сервера через jQuery AJAX.
<div id='result'>
<span></span>
</div>
Однако вместо того, чтобы писать что-то вроде этого:
$(function(){
$('#result span').text($('#handler').val());
});
Я хотел бы использовать что-то вроде:
<div id='result'>
<span>javascript:$('#handler').val();</span>
</div>
Тем не менее, я не получаю ожидаемый результат. Могу ли я использовать этот подход с JavaScript?
Обновление: всем, пожалуйста, я знаю о $(document).ready();
, Итак, не предлагайте лучшие способы. Я просто хотел узнать, есть ли встроенный JavaScript или нет, и если да, то как?
5 ответов
Нет, вы не можете использовать этот подход с Javascript. Нет такого понятия, как встроенный Javascript.
Что вы видите в ссылке, как <a href="javascript:alert(1)">
это javascript:
псевдопротокол, аналогичный по использованию http:
протокол. Когда вы указываете браузер на такой URL, браузер запускает скрипт.
Если вы хотите запустить скрипт на странице, вам нужен тег скрипта.
Хотя <script>
тег работает и позволит вам делать то, что вы пытаетесь сделать, я бы действительно предложил переосмыслить ваш дизайн там. Это не то, что вы бы назвали "ненавязчивым Javascript".
Почему вы предпочитаете смешивать HTML и JS? Если это для любопытства - хорошо, но если это предназначено для превращения в производственный код, то вы можете разделить их как можно больше. Вы будете вознаграждены гораздо лучшей ремонтопригодностью.
Вы могли бы сделать -
<input type="text" id="handler" value="yes"/>
<div id='result'>
<span>
<script>document.write($('#handler').val());</script>
</span>
</div>
и страница будет запускать Javascript при попадании в тег сценария. Вы должны убедиться, что элемент "#handler" уже был загружен, иначе сценарий потерпит неудачу.
В целом, было бы лучше, чтобы такие теги сценариев не использовались для разметки.
Рабочая демонстрация - http://jsfiddle.net/ipr101/h6zXs/
Вы забыли о <script>
тег?
<div id="result"></div>
<script>$('#result').text($('#handler').val();</script>
Несколько лет назад у меня возникла именно эта проблема: я использовал AJAX для извлечения HTML, а в HTML был встроен Javascript. Мне никогда не удавалось найти лучшего решения, чем ручной анализ HTML-кода для поиска тегов Javascript и вызова eval
на их содержание. Хакерский и ненадежный, но это было лучшее, что я мог найти.