11.1 简单差异


  硕正套件对FireFox、Chrome和IE的支持存在着一些差异,能简单解决的差别如下:

1. 页面 meta 声明
  FireFox/Chrome的 HTML 页面必须要有<meta ... >的文字编码声明,例如:
<meta http-equiv="content-type" content="text/html; charset=gb2312">
//或
<meta http-equiv="content-type" content="text/html; charset=utf-8">
  否则页面调用插件的函数时,参数中的中文很可能会变成乱码.
  IE 没有此要求。

2.<Form>
  如果您将 插件/加载项 安置在<Form>中,在Firefox和Chrome下没问题,但在IE中针对控件的js会有问题,例如:
...
function OnReady(id)
{
 AF.func("Build", "g1.xml");
}
...
<form name="form1">
    <script>insertReport('AF', '')</script>
</form>
...
  IE执行到第4行会抛出 'AF'未定义的错误,此时改成如下写法就能成功:
...
function OnReady(id)
{
 form1.AF.func("Build", "g1.xml");
}
...
  当然,您也可以把 上面insertReport( )的语句移出form,这样就不会有这个问题了。

3.func的布尔型参数
  如果 func 函数第二个参数为布尔型,比如:
var b = true;
AF.func("GrayWindow", b);
  发现在 IE 下会有问题: 插件接收到的串居然是 "-1" 了! 这将导致函数执行结果与预期不一致。改成如下就能正常:
AF.func("GrayWindow", String(b));
	或
AF.func("GrayWindow", b + '');
  Chrome 和 Firefox无此问题,其它数据类型也没有这种问题。

4.FireFox 的 <input> 无法输入问题
  在 Firefox 浏览器页面的控件和 HTML 元素交互操作过程中,可能会出现 <input> 明明处于焦点、但是暂时无法输入的现象,建议为此 <input> 添加 onClick 事件, 例如:
    <input onClick="toFocus()" id='source' type=edit size=22>
  toFocus() 定义如下:
function toFocus() {
 document.getElementById("source").blur();
 document.getElementById("source").focus();
}


5.FireFox、Chrome页面中,插件无法感知页面上下文的字体,主要受影响的是Edit组件