ZK + RapidSpell Checker Integration?

ZK + RapidSpell Checker Integration?

本文关键字:Integration Checker RapidSpell ZK      更新时间:2023-09-26

最近几天,我试图将RapidSpell CheckerZK Web应用程序集成,我能够运行演示代码。在这里,您可以获得演示代码。现在,当我要在我的web应用程序中使用相同的代码时,如果我的页面是单独的页面,一切都很好,但当我的页面在代码下面的选项卡中动态创建时

Executions.createComponents("/my_detail.zul", comp, arguments);

当我在zul文件中添加上述行时

<?script type="text/javascript" content=" zk.afterMount(function()
{rsw_setupTextBoxes(true);});"?>
    <script src="a.rapidspellweb?t=r&amp;n=RapidSpell-AYT.js" />
     <script type="text/javascript">
        rapidSpell.setParameterValue('default', 'UserDictionaryFile',
        '~/userdictionaries/1.txt');
    </script>     

这是运行快速拼写检查器所必需的。

在这里,您可以看到运行良好的演示zul

<window title="Hello World!!" border="normal" width="100%" >
    <?script type="text/javascript" content=" zk.afterMount(function()
{rsw_setupTextBoxes(true);});"?>
    <style src="./sans-style.css" />
    <script src="a.rapidspellweb?t=r&n=RapidSpell-AYT.js" />
    <script type="text/javascript">
        rapidSpell.setParameterValue('default', 'UserDictionaryFile',
        '~/userdictionaries/1.txt');
    </script >
    <label value="You are using: ${desktop.webApp.version}" />
    <textbox rows="10" ></textbox>
</window>

你的意思是,如果直接链接到页面,效果会很好,但如果页面是动态创建的,会发生一些js错误吗?

这可能是由于运行一些应该在js库加载太早后运行的代码造成的,您可以尝试以下操作:

var initTimer = setInterval (function () {
    if (window.rapidSpell) {
        rapidSpell.setParameterValue('default', 'UserDictionaryFile',
            '~/userdictionaries/1.txt');
        clearInterval(initTimer);
    }
}, 500);

编辑:应用subodh-joshi提供的编辑,用javascript 替换zscript部分

通过javascript、调用所需函数

例如

<script type="text/javascript">
    <![CDATA[
      zk.afterMount(function(){
             setTimeout(function() { rapidSpell.setParameterValue('default', 'UserDictionaryFile', '~/userdictionaries/AmandaDic.txt');}, 2000); 
             setTimeout (function () { rsw_setupTextBoxes(true);}, 4000); });
    ]]> 
</script>