Delphi,EmbeddedWB / TWebbrowser – jQuery没有执行

我使用EmbeddedWB(一个TWebbrowser扩展)来做一些动态生成内容的“实时预览”。

我正在尝试将jQuery添加到混合中,所以我可以得到一些奇特的效果,但是因为IE9总是问每个该死的页面都有“允许阻塞的内容”,所以当然不会允许动态生成的(Webbrowser.LoadFromString)找乐子。 简单来说:它不允许Javascript执行。

我尝试将一个SecurityManager添加到我的TEmbeddedWB中,但是它也没有这样做。 我在Firefox和IE9中测试了我的动态代码,它可以工作(当然,在IE9中我必须先允许,这就是我发现这是一个安全问题)。

是否有一种无痛的方法来解决这个问题,而无需手动进入IE并调整某些内容? 或者我对这个问题的原因完全错了?

编辑 :尝试这篇文章的方法后 ,IE不会问它是否应该允许的东西,但我的脚本仍然没有在我的TEmbeddedWB / TWebbrowser中执行..

编辑2 :好的,通过删除jQuery代码,并显示一个普通的警报,我不得不得出结论,JS现在正在执行,但jQuery不是。

编辑3 :这是我的应用程序生成的(简化的)HTML代码,其中jQuery在我的EmbeddedWB / TWebbrowser控件中不起作用 – 但是 ,它在Internet Explorer 9本身中有效:

        

Some stuff here!

$(document).ready(function(){ alert('I Am jQuery!!!!'); });

编辑4 :我也尝试将src切换到Google Hosted jQuery,但这也无效。 删除Metatag也没有修复它。 只是在你浪费时间建议之前让你知道我尝试过的东西:)

编辑5 :通过导航到使用jQuery(Webbrowser.Navigate)的网站,该网站正在按预期工作。 但是当从我的本地test.html执行它时,或者通过执行.LoadFromString(); , 不起作用。

不会工作= jQuery代码没有执行。

如果您为jquery.js文件使用正确的URL似乎有效:

   

或者相对路径,你也可以省略file:// protocol:

  

从文件加载HTML时,上述工作原理。 但问题是,如果来自文件系统的内存和javascript中的内容不被视为跨越安全上下文边界而被嵌入式浏览器因此而被拒绝。 在这种情况下,将jquery直接嵌入HTML内容(使用标记)应该可行。