1
我想使用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>
更新:删除无脚本标签
'
openid.init引用像'#openid_choice'和'#openid_input_area'这样的元素,它们是加载内容的一部分。我只能修改加载的内容,而不是加载内容的脚本。是否可以从加载的内容中设置回调? (noscript标记是openid-selector插件的一部分,我将删除它) – 2010-10-09 08:21:31
noscript有其用处,但在这一点上它可能被认为不推荐使用,所有的东西都应该由JS自己处理。 noscript有其共同的问题:只检测浏览器JS禁用,不防火墙禁用或任何其他措施,noscript是块级元素,noscript本质上增加了行为的力量,这是邪恶的HTML! – 2010-10-09 08:21:39