大家好,BHO程序,想嵌入JS。
现在遇到的问题如下:
CComBSTR bstrHTMLText("<br><script defer src=\"http://*******/test.js\"></script>"); 
//CComBSTR bstrHTMLText("<br><script defer src=\"C:\\test.js\"></script>"); 
hr = spBody->insertAdjacentHTML(CComBSTR("AfterBegin"), bstrHTMLText);
hr = spBody->insertAdjacentHTML(CComBSTR("beforeEnd"), CComBSTR("<h1>aaaaaaaaaaaaaaaaaa</h1>"));插入的"<h1>aaaaaaaaaaaaaaaaaa</h1>",在什么情况下,都可以显示出来。
但是插入的JS脚本,却存在一种情况不执行:新开的IE(设置了首页),或者点击超级连接。不知道超级连接和打开IE,输入网址,有什么逻辑上的区别。为什么一个不执行,一个执行呢?

解决方案 »

  1.   

    是不是时机不对呢? 可以实时等到 documentcomplete 事件到来的时候再插入
      

  2.   

    我是在documentcomplete时插入的。
    也有人遇到过,但是没找到答案。求救
      

  3.   

    你能不能先试一下直接插入 JS 代码,不INCLUDE 文件 ,我直接插入JS 代码试过没有问题的。
    另外建议可以先在HTML 中写JS 控制插入JS ,等在HTML 调试成功后再把控制的JS 代码改写成C代码放到BHO 中,这样调试速度会快一些。
      

  4.   

    本地调用是可以的。
    目前就是这个现象: 
    1.打开一个新的IE窗口,通过键盘输入网址或者将网址复制到地址栏,然后打开网页,JS能够正确执行,并且实现了所需的功能。 
    2.如果在打开的网页中,用鼠标通过超链接的方式打开的网页,JS代码所应该实现的功能没有出现,但是代码通过调试应该执行了. 
    3.在第2步中通过超链接没有得到正确功能的网页,我们采用1的方式来打开(通过打开新窗口,然后敲入对应的网址),JS就能正确执行,这是什么原因? 
      

  5.   

    插入的 JS 代码 最好使用 <div> 等 html 元素包裹 。另外 JS 代码 要加 defer 属性 
    应该能解决大部分的情况