编程语言
首页 > 编程语言> > JavaScript-Delphi,EmbeddedWB / TWebbrowser-jQuery无法执行

JavaScript-Delphi,EmbeddedWB / TWebbrowser-jQuery无法执行

作者:互联网

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

我正在尝试将jQuery添加到组合中,这样我可以得到一些奇特的效果,但是,由于IE9总是要求为每个该死的页面询问“允许阻止的内容”,因此肯定不允许动态生成的页面(Webbrowser.LoadFromString)找乐子.简而言之:它不允许Javascript执行.

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

是否有一种轻松的方法来解决此问题,而无需手动进入IE并进行调整?还是我对问题的原因完全错了?

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

编辑2:好的,通过删除jQuery代码并显示简单的Alert,我不得不得出结论,现在正在执行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,但这也不起作用.删除元标记也无法修复.只是让您知道我尝试过的事情,然后再浪费时间提出建议:)

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跨越安全上下文边界并因此被嵌入式浏览器拒绝.在那种情况下,应该直接将jquery嵌入HTML内容中(使用< script>标记).

标签:twebbrowser,javascript,jquery,delphi,internet-explorer
来源: https://codeday.me/bug/20191012/1903479.html