Delphi,EmbeddedWB / TWebbrowser - jQuery没有执行

时间:2011-07-25 23:31:59

标签: javascript jquery delphi internet-explorer twebbrowser

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

我正在尝试将jQuery添加到混合中,所以我可以得到一些奇特的效果,但是因为IE9总是要求每个该死的页面“允许阻止的内容”,一个动态生成的(Webbrowser.LoadFromString)肯定不会被允许玩得开心。简单来说:它不允许执行Javascript。

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

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

编辑:尝试this article's method后,IE不再询问是否应该允许更新内容,但我的脚本仍未在我的TEmbeddedWB / TWebbrowser中执行..

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

编辑3 :这是我的应用生成的(简化的)HTML代码,其中jQuery在我的EmbeddedWB / TWebbrowser控件中无效 - 但是,它的工作原理在Internet Explorer 9中:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <script type="text/javascript" src="file://C:\jQuery.js"></script>
</head>
<body>
    <center>
    <p>
      Some stuff here!
    </p>
    </center>

    <script type="text/javascript" language="javascript">
    $(document).ready(function(){
            alert('I Am jQuery!!!!');
    });
    </script>
</body>
</html>

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

EDIT5 :通过导航到使用jQuery(Webbrowser.Navigate)的网站,网站按预期工作。但是,当从我的本地test.html执行此操作时,或通过执行.LoadFromString();时,它将无效。

不起作用= jQuery代码没有执行。

1 个答案:

答案 0 :(得分:2)

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

<script type="text/javascript" src="file://C:/jQuery.js"></script>
<script type="text/javascript" src="file:///jQuery.js"></script>

或相对路径,您也可以省略file://协议:

<script type="text/javascript" src="../../jQuery.js"></script>

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