各位,我是通过C#开发的ActiveX浏览器控件,在调用JS时出现问题,代码如下:
/// <summary>
/// 调用JS函数
/// </summary>
/// <param name="fnName">js函数名</param>
/// <param name="args">入参</param>
protected void CallJS(string fnName, params object[] args)
{
if (typeIOleObject == null)
{
typeIOleObject = this.GetType().GetInterface("IOleObject", true);
object tmpOldClientSite = typeIOleObject.InvokeMember("GetClientSite",
BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
null,
this,
null);
oleClientSite = tmpOldClientSite as IOleClientSite;
oleClientSite.GetContainer(out pObj);
}
//获取页面的Script集合
IHTMLDocument pDoc2 = (IHTMLDocument)pObj;
object script = pDoc2.Script;
try
{
//调用JavaScript方法OnScaned并传递参数,因为此方法可能并没有在页面中实现,所以要进行异常处理
script.GetType().InvokeMember(fnName,
BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
null,
script,
args);
}
catch { }
}
错误信息如下:
同样的写法,本地写的小案例调用完全没问题,一放到生产环境中就出现了问题,我想请教下,导致这类问题的原因有哪些呢?