Как использовать встроенный JavaScript в HTML? - PullRequest
7 голосов
/ 13 августа 2011

Поддержка, что у меня есть это скрытое поле:

<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 ]

12 голосов
/ 13 августа 2011

Нет, вы не можете использовать этот подход с Javascript. Нет такого понятия, как встроенный Javascript.

То, что вы видите в ссылке типа <a href="javascript:alert(1)">, - это псевдопротокол javascript:, похожий по использованию на протокол http:. Когда вы указываете браузер на такой URL, браузер запускает скрипт.

Если вы хотите запустить скрипт на странице, вам нужен тег скрипта.

6 голосов
/ 13 августа 2011

Вы можете сделать -

<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/

6 голосов
/ 13 августа 2011

Хотя тег <script> работает и позволяет вам делать то, что вы пытаетесь сделать, я бы действительно предложил переосмыслить ваш дизайн там.Это не то, что вы бы назвали «ненавязчивым Javascript».

Почему вы предпочитаете смешивать HTML и JS?Если это для любопытства - хорошо, но если это предназначено для превращения в производственный код, то вы можете разделить их как можно больше.В итоге вы будете вознаграждены за лучшую ремонтопригодность.

2 голосов
/ 13 августа 2011

Вы забыли о теге <script> ?

<div id="result"></div>
<script>$('#result').text($('#handler').val();</script>
1 голос
/ 13 августа 2011

Несколько лет назад у меня возникла именно эта проблема: я использовал AJAX для извлечения HTML, а в HTML был встроен Javascript. Мне никогда не удавалось найти лучшего решения, чем ручной анализ HTML-кода для поиска тегов Javascript и вызова eval их содержимого. Хакерский и ненадежный, но это было лучшее, что я мог найти.

...