Delphi, EmbeddedWB/TWebbrowser - jQuery not executing

Delphi, EmbeddedWB/TWebbrowser - jQuery not executing

本文关键字:jQuery not executing TWebbrowser EmbeddedWB Delphi      更新时间:2023-09-26

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

我正在尝试添加jQuery到混合,所以我可以得到一些花哨的效果继续,然而,由于IE9总是要求"允许屏蔽内容"的每一个该死的页面,一个动态生成的一个(Webbrowser.LoadFromString)当然不会被允许有乐趣。简单来说:它不允许Javascript执行。

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

有没有一种无痛的方法来解决这个问题,而不必手动进入IE并调整一些东西?还是我对问题的原因完全错了?

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

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

EDIT 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到谷歌托管的jQuery,这也不起作用。删除Metatag也没有修复它。我只是想在你浪费时间提出建议之前让你知道我尝试过的东西:)

EDIT5:通过导航到使用jQuery (Webbrowser.Navigate)的网站,该网站正常工作。但是,当从我的本地test.html或.LoadFromString();中执行时,它将不起作用。

将不工作= jQuery代码不执行

如果您为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的内容没有被认为跨越安全上下文边界并因此被嵌入式浏览器拒绝。在这种情况下,直接在HTML内容中嵌入jquery(使用<script>标记)应该可以工作。