BHO使用insertAdjacentHTML插入JS文件,IE6没错,但在IE7里总是提示“无效字符”,是怎么回事呢?

ZengHD 2009-03-02 03:39:52
我在BHO里使用下面两个方法插入JS文件,在IE6上都没有问题,但在IE7上总是提示“无效字符”:

第一种方法:
CComPtr<IHTMLElement> spBody;
spHTML->get_body(&spBody);
if(spBody!=NULL)
{
CComBSTR bstrHTMLText("<br><script defer src='C:\\function.js'></script>");
spBody->insertAdjacentHTML(CComBSTR("AfterBegin"),bstrHTMLText);
}



第二种方法:
CComPtr<IHTMLElement> spBody;
spHTML->get_body(&spBody);
if(spBody!=NULL)
{
CComPtr<IHTMLElement> spScript;
spHTML->createElement(CComBSTR("script"),&spScript);
if(spScript!=NULL)
{
spBody->insertAdjacentHTML
spScript->setAttribute(CComBSTR("src"),CComVariant("C:\\function.js"),0);
spScript->setAttribute(CComBSTR("type"),CComVariant("text/javascript"),0);

CComQIPtr< IHTMLDOMNode, &IID_IHTMLDOMNode > pBodyNode(spBody);
if (pBodyNode!=NULL )
{
CComQIPtr< IHTMLDOMNode,&IID_IHTMLDOMNode > pNewChild(spScript);
CComPtr< IHTMLDOMNode> pRefChild;

hr = pBodyNode->appendChild( pNewChild, &pRefChild );

}
}
}



function.js文件很简单,就一个函数:
function ShowMsg()
{
alert("123");
}


为什么总是提示“无效字符”呢?JS文件的字符集错误?还是JS文件有错误?

...全文
1489 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
snmhm1991 2012-04-21
  • 打赏
  • 举报
回复
请问楼主是如何解决这个问题的?可否发送一份代码给我?
mm275924478 2011-04-21
  • 打赏
  • 举报
回复
还有一种可能就是你把JS文件放在第一行了!
mm275924478 2011-04-21
  • 打赏
  • 举报
回复
还有一种可能就是你把JS文件放在和经一行了!
handongpu16 2009-04-28
  • 打赏
  • 举报
回复
我遇到同样的问题,安全问题,
1.把你正在访问的网址添加到可信站点列表中就可以正常显示,
2.或者再本地建立1.htm用ie打开也可以正常显示,

不知道如何解决!!!???
jameshooo 2009-03-02
  • 打赏
  • 举报
回复
注意defer的使用,它是延迟加载的,必须等到当前的文档任务完成才会执行延迟的任务,而且文件的下载是异步的,所以在调用此js中的任何函数或对象之前要判断该脚本元素的readyState是否complete,否则只能继续等。
ZengHD 2009-03-02
  • 打赏
  • 举报
回复
我试过加载网上的一个JS文件,不再提示“无效字符”了,但调用JS文件里的函数时,仍然会提示“缺少对象”,是不是因为网上的JS文件没有下载到本地,所以调用不了啊?
jameshooo 2009-03-02
  • 打赏
  • 举报
回复
别在互联网页面上加载本机的脚本文件,用异步可插入协议来解决。
oyljerry 2009-03-02
  • 打赏
  • 举报
回复
IE7下有protected mode保护模式,不知道安全方面会不会有影响,你关掉看看...
ZengHD 2009-03-02
  • 打赏
  • 举报
回复
刚刚试过了,都不行啊
jameshooo 2009-03-02
  • 打赏
  • 举报
回复
C:\\function.js 改成 C:\\\\function.js 或者 C:/function.js 再试试

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧