我加载了html& JS代码动态来自webservice。我使用原型更新方法:
placeholder.update(result.Static.html); // which also include javascript code
我加载代码后,一切正常:
ProRegResetForm();
alert('reset done');
然而,从声明为
的控件<a href="javascript://" onclick="javascript:ProRegResetForm();" class="au">Reset</a>
我遇到错误:未定义ProRegResetForm。
简化的测试代码(也没有用):
<script type="text/javascript">
var defkeyword_ZipCode = 'Zip Code';
</script>
<a href="javascript://" onclick="alert(defkeyword_ZipCode);">test link</a>
答案 0 :(得分:0)
编写如下代码是正确的:
<a href="javascript://" id="element">test link</a>
<script type="text/javascript">
functoin somethingcomplex() {
bla bla bla
}
$('element').onclick = function() { somethingcomplex(); }
</script>
答案 1 :(得分:0)
鉴于您的“简化测试代码”未执行,您的代码中的其他位置可能会出现javascript错误。跟随异常的Javascript代码将不会执行。
您是否尝试使用Firebug或IE Developer Toolbar在代码段之前检查脚本(因为它显示在客户端上)?
答案 2 :(得分:0)
我遇到了类似的问题,并通过用“^”分隔JavaScript的HTML响应并单独插入来解决它。
//=============================================================================
function injectJavascript(src)
{
var scripts = document.getElementById("scripts");
var javascriptSrc = document.createElement("script");
javascriptSrc.setAttribute("type", "text/javascript");
javascriptSrc.setAttribute("language", "JavaScript1.2");
javascriptSrc.innerHTML = src;
scripts.appendChild(javascriptSrc);
}
//=============================================================================
function insertHtmlAndScript(target)
{
if (req.readyState == 4) // 4 == "loaded"
{
if (req.status == 200) // 200 == "Ok"
{
var resp = req.responseText.split("^");
div = document.getElementById(target);
div.innerHTML = resp[0];
injectJavascript(resp[1]);
}
else
{
alert("Could not retreive URL:\n" + req.statusText);
}
}
}
//======================================================================
我能想到的唯一原因是,当你的注入没有时,这是有效的,因为HTML与JavaScript的解释是线程化的,因此JavaScript无法正确绑定......但这只是猜测。