【发布时间】:2011-07-25 23:31:59
【问题描述】:
我正在使用 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 托管的jQuery,但也没有成功。删除 Metatag 也没有修复它。在你浪费时间建议之前让你知道我尝试过的东西:)
EDIT5:通过导航到使用 jQuery (Webbrowser.Navigate) 的站点,该站点按预期工作。但是,当从我的本地 test.html 或通过 .LoadFromString(); 执行此操作时,它将无法正常工作。
不起作用 = jQuery 代码未执行。
【问题讨论】:
-
需要魔法元标签吗?
-
@mjn - 是的,强制 Webbrowser 进入 IE9 模式,启用 CSS3 功能。
-
@mjn - 删除它并不能解决任何问题
标签: javascript jquery delphi internet-explorer twebbrowser