【发布时间】:2012-10-12 08:14:59
【问题描述】:
我正在为即时通讯客户端开发插件,该插件将在 QWebView 中显示聊天日志。插件必须支持 html 模板。现在我正在尝试通过调用 QWebElement.appendInside('new message') 来附加新消息,如果模板中有 javascript 源它不起作用。 例如模板可能是这样的类型:
<!--MessageIn-->
<div class="space"> </div>
<div class="in MessageIn" id="oneShot">
<div class="tr">
<div class="bl">
<div class="br">
<p class="head">
<span class="time" id="time">%time%</span>
<span class="name" id="name">%name%</span>
</p>
<p class="content">
<span class="text" id="text"><script>getitall('%text%','%name%','%cid%','%base%',meldungsart[0]);</script></span>
</p>
</div>
</div>
</div>
</div>
<script type="text/javascript">animation1();</script>
函数 getitall() 和 animation1() 不会被执行。
我不能使用 QWebElement.evaluatejavascript() 因为我不知道函数名。
【问题讨论】:
-
您可以在模板中搜索节点,然后读取其内容并进行评估。
-
evaluatejavascript() 还有一个问题:如果 document.write() 用在 JavaScript 函数中(在模板中),那么结果它将替换整个 DOM。
-
这是我的错误。 document.write 方法不应在加载的页面中使用。 evaluateJavaScript 是合适的。
-
但有些模板仍然无法正常工作,因为在向 DOM 添加新元素之前必须调用一些 JavaScript 函数。
-
所以我的问题仍然没有解决方案
标签: javascript qt dom webkit