Sunday, June 25, 2006

requestText iso-8859-1 error solved

OakVoc中的德语网网页,凡不是UTF-8的都出现 了问题,显示有错误。找了好几天了,总以为是编码上面的问题,后来发现不是,是XMLHttpRequest的实现上有问题,不能正确的解析非UTF8的字符,所以反而是国内的网页好用,因为它默认是UTF-8的。

解决方法:

在req.send(null)之前调用一下 req.overrideMimeType("text/xml; charset=iso-8859-1");然后结果就正确了。

Thursday, June 22, 2006

IME的一个更佳的解决方案

从indicime中得到启发,发现由INPUT去HOOK不是一个好的办法,对网页复杂性没法控制,直接FireEvent来解决,真的好。就是要使用UTF-8的编码才行。

Wednesday, June 21, 2006

IFrame中的Mouse Position问题

使用IFRAME的offsetParent

        if (evt.target == this.srcDoc){
        }else{
            var el = this.srcDoc.getElementById('oakvoc_iframe').offsetParent;
            debug('el='+el);
            x = evt.pageX + el.offsetLeft;
            y = evt.pageY + el.offsetTop;
        }

IFrame的contentDocument内容的动态修改

因为字典是多文字的,因此,显示的内容的编码encoding和目前浏览的文档的类型很可能是不同的。如果是中文和英语,设成中文肯定没问题,但如果是德语及其它语言都存在,最好是用UTF-8的编码方式。所以必须在DIV内部再引入一个IFRAME,使得它的编码与主文档可以不同。但由于Javascript域安全的限制,是不可以将入与主文档的域不同的URL,也就是说,file:///不能Load http://(所以估计,dictionarytooltip是不能对本地文件进行查词的。),于是就有了个问题,我们的document如何能被动态的加载到iframe中,同时也绕过安全检查的问题?

下面是一个实现过程:
在创建并添加Iframe之后,用文档打开的方法也来到这个目的。
var iframe = srcDocument.createElement('iframe');
srcDocument.body.appendChild(iframe);
iframe.contentDocument.open();
iframe.contentDocument.write('<html>......</html>');// what you want ?!
irame.contentDocument.close();

Greate!

Tuesday, June 20, 2006

getSelection(),浪费时间的一次教训

发现可以使用:
    var focusedWindow = document.commandDispatcher.focusedWindow;
    var sel = focusedWindow.getSelection.call(focusedWindow);
来代替document.getSelection(); 以防止出现一个提示,说这个方法已经弃用了。
这中间又有一点手误导致原来的Document 变成了dcument Eement, 代码不执行,也没有错误提示。

而且window.getSelection和Document的getSelection的返回值不一样,必须显示的调用.toString方法才能对它进行一些字符串的操作。