Я пытаюсь загрузить некоторый контент на страницу с помощью Ajax. Загруженный html содержит код javascript. Несмотря на то, что код обернут в пределах $(document).ready
, он запускается до того, как содержимое будет вставлено в документ, потому что родительский документ Dom готов к моменту загрузки содержимого.Отложить выполнение javascript до добавления содержимого в Документ
Как отложить выполнение кода до тех пор, пока содержимое не будет вставлено в документ. Вот HTML, который я пытаюсь загрузить (это код openid-selector)
<script type="text/javascript" src="/js/openid-jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert('ajax-html');
openid.init('openid_identifier');
});
</script>
<!-- Simple OpenID Selector -->
<form action="try_auth.php" method="get" id="openid_form">
<input type="hidden" name="action" value="verify" />
<fieldset>
<legend>Sign-in or Create New Account</legend>
<div id="openid_choice">
<p>Please click your account provider:</p>
<div id="openid_btns"></div>
</div>
<div id="openid_input_area">
<input id="openid_identifier" name="openid_identifier" type="text" value="http://www.joycebabu.com" />
<input id="openid_submit" type="submit" value="Sign-In"/>
</div>
</fieldset>
</form>
Update: Удалены NoScript тег
'
openid.init относится к элементам типа '# openid_choice' и' # openid_input_area', которые являются частью загруженного содержимого. Я могу изменить только загруженный контент, а не скрипт, загружающий контент. Можно ли установить обратный вызов из загруженного содержимого? (Тег noscript был частью плагина openid-selector, я его удаляю) –
noscript использовал его, но его можно было бы считать устаревшим в этот момент, и все должно быть обработано JS самостоятельно. noscript имеет свою долю проблем: только обнаруживает отключение браузера JS, а не отключение брандмауэра или любую другую меру, noscript - это элемент уровня блока, а noscript добавляет существенно поведенческую силу в html, который является злом! –