2011-09-20 72 views
1

此問題僅在我的應用程序通過KBX運行時纔會顯現。在小書籤中運行它可以正常工作。我曾經能夠做到這一點,但它不再工作。調用我自己的JavaScript函數

這是我的。有一個<p>標籤的onclick屬性調用JavaScript函數:

<p conclick="window.a163x134_log(this); return false;"></p> 

這裏是我的功能是什麼樣子:

emit <| 
    window.a163x134_log = function(obj) { 
     // Do something 
    }; 
|>; 

我使用普通函數名(不附window)嘗試並用KOBJ命名它。這些作品都沒有。我得到的錯誤信息是「Uncaught TypeError:Object [object DOMWindow] has no method'a163x134_log'」。

這是一個錯誤還是我需要改變我的代碼中的東西?

回答

1

小李的答案是最常見的,但我在這裏張貼我的具體的解決方案以供將來參考。

由於某種原因,use resource沒有工作。所以不是,我動態添加<script>標籤在emit這樣的:

emit <| 
    var trigger_click_script = document.createElement("script"); 
    trigger_click_script.src = "<url to my JavaScript file>"; 
    document.getElementsByTagName("head")[0].appendChild(trigger_click_script); 
|>; 

外部的JavaScript然後文件看起來像這樣:

$("p.ttt-time").click(function(e) { 
    e.preventDefault(); 
    // Do something 
}); 

通過這種方式,我們直接連接的點擊事件處理與jQuery,而不是依靠onclick屬性能夠看到一個名稱的函數。

注意:我正在使用的網站有jQuery已經可用,所以我使用他們的版本,而不是Kynetx運行時附帶的$K版本。