2010-02-09 3 views
0

Я загружаю html & JS-код динамически из webservice. Я использую прототип метода обновления:Динамический javascript - onclick не отображается

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 является не определен.

УПРОЩЕННЫЙ КОД TEST (который также не работает):

<script type="text/javascript"> 

    var defkeyword_ZipCode = 'Zip Code'; 

</script> 
<a href="javascript://" onclick="alert(defkeyword_ZipCode);">test link</a> 
+0

Можете ли вы привести более полный пример своего кода? Проблема, скорее всего, в разделе кода, который вы не показываете. Трудно сказать, что что-то происходит с функцией между вашим тестовым вызовом и событием клика. Вы пытались изменить событие клика на другую функцию (возможно, «предупреждение»), чтобы убедиться, что событие щелчка стреляет правильно? –

+2

Вам НИКОГДА не нужен javascript: в onclick. Однако это не поможет. –

+0

Кажется, что все переменные и функции, определенные в следующем скрипте, живут в отдельном пространстве имен. – st78

ответ

0

Это было правильно написать код:

<a href="javascript://" id="element">test link</a> 
<script type="text/javascript"> 
    functoin somethingcomplex() { 
bla bla bla 
} 

    $('element').onclick = function() { somethingcomplex(); } 

</script> 
0

Учитывая, что ваш 'упрощенный тестовый код' не выполнять, вам вероятно, имеют ошибку javascript в другом месте вашего кода. Код Javascript, следующий за исключением, не будет выполняться.

Вы пытались изучить сценарий до вашего фрагмента (как он появляется на клиенте) с помощью Firebug или IE Developer Toolbar?

0

У меня была аналогичная проблема, и я решил ее, разделив HTML-ответ от JavaScript с помощью «^» и вставив их отдельно.

//============================================================================= 
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 не может связать правильно ... но это только предположение.