Как использовать встроенный 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 на их содержание. Хакерский и ненадежный, но это было лучшее, что я мог найти.

Другие вопросы по тегам