- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
HTML + JavaScript
<style type="text/css">
.color1{
color: #3D8BD0;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<body>
<div id="mensagem">Mensage</div>
<script>
$("#mensagem").click(function( event ) {
printer.text('Hello');
});
</script>
</body>
还有 .py 文件:
# -*- coding:utf-8 -*-
import sys
from PySide.QtCore import Slot, QObject, QUrl
from PySide.QtGui import QApplication
from PySide.QtWebKit import QWebView
from threading import Timer
class Dac(QObject):
def __init__(self, parent=None):
super(Dac, self).__init__(parent)
self.defultMsg = "default"
self.app = QApplication(sys.argv)
self.view = QWebView()
self.view.resize(445, 791)
self.view.load(QUrl("./page.html"))
self.frame = self.view.page().mainFrame()
self.frame.addToJavaScriptWindowObject('printer', self)
self.view.show()
self.app.exec_()
sys.exit(self.app.exec_())
def changeText(self, mensagem):
print mensagem
self.frame.evaluateJavaScript(mensagem)
@Slot(str)
def text(self, message):
print message
strm = '$("#mensagem").html("'+message+'").addClass("color1");'
self.changeText(strm) #this change the text
t = Timer(6.5, self.timeoff)
t.start()
def timeoff(self):
strm = '$("#mensagem").html("'+self.defultMsg+'").removeClass("color1");'
self.changeText(strm) #this don't change
print "debug"
dac = Dac()
当我运行 Python 文件时,窗口会打开并显示 HTML 页面,然后当我单击 div“mensagem”时,文本只会更改一次。
所以我认为我的问题是声明 self.frame.evaluateJavaScript(mensagem)
只适用于第一次。
有没有人遇到同样的问题?
最佳答案
您提供给threading.Timer
的回调不会被主线程执行。由于 QWebView
继承自 QWidget
,因此您必须与其交互 from the main thread :
Although QObject is reentrant, the GUI classes, notably QWidget and all its subclasses, are not reentrant. They can only be used from the main thread.
您可以通过使用 PySide.QtCore.QTimer
并替换此代码来解决此问题:
t = Timer(6.5, self.timeoff)
t.start()
与:
QTimer.singleShot(6.5 * 1000, self.timeoff)
QTimer
与 Qt 的事件循环一起工作,因此保持在同一个线程中。
关于javascript - evaluateJavaScript() 只工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20549164/
我在这个项目中使用 swift 4。我正在尝试使用 EvaluateJavascript() 函数在 WKWebView 中运行的网页上运行 javascript。我正在尝试一个简单的警报功能来启动以
我尝试在我的主线程中使用 evaluateJavascript 方法,它工作正常。但是如果我将函数移动到我的另一个线程(我有一个服务在后台运行等待消息)。它根本不起作用。所以我假设 evaluateJ
我有以下代码: HTML + JavaScript .color1{ color: #3D8BD0; } Mensage $("#mensagem").click(function(
如何在运行时执行 javascript 函数,加载聊天窗口的函数不会执行 func webView(_ webView: WKWebView, didFinish navigation: WKNavi
我正在尝试使用新的 evaluateJavascript Android 4.4 中的方法,但我得到的只是一个空结果: webView1.evaluateJavascript("return \"te
我正在向 javascript 函数发送一个值并得到一个结果。但是,当运行以下代码时,我收到“错误域 = WKErrorDomain 代码 = 5“JavaScript 执行返回了不受支持的类型的结果
我正在尝试通过在 kitkat 之后为 android 版本调用 evaluateJavaScript() 方法并使用 loadUrl("javascript:"+javascript ); 在 ki
我有一个 UIViewController,它有一个 WKWebView,它加载一个特定的 View ,其中有一个需要自动点击的按钮。为了解决这个问题,我使用了 WKNavigationDelegat
for (int i = 0; i page ()->mainFrame ()->evaluateJavaScript (QString ("constructFileName (%1).arg (c
为 Android webView 编写了一些渲染器。尝试像这样调用一些 javascript: if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitka
我正在尝试使用 WKWebView.EvaluateJavaScript(string, WKJavascriptEvaluationResult) 从我的 javascript 代码中获取一个值返回
我是 Swift 开发的新手,我有一个正在开发的混合应用程序,我已经连接了身份验证。当用户使用设备上的指纹传感器进行身份验证时,我想触发 JS 或以其他方式与 WKWebView 交互......但出
我几周来一直在尝试解决这个问题,但不知道是什么导致了这个问题。在我的项目中,我使用 Android Webview 的 evaluateJavascript() 方法,如下所示: this.r
我有一个字符串化的 JSON 对象,我想将其作为字符串传递到我的 WebView 中。如果我的 JSON 字符串是像这样的简单的一级 JSON: JSONObject object = new JSO
我对从 evaluateJavascript 和 getElementById 返回的字符串有问题,其中返回的字符串使用斜线和引号格式化。 例如,我的 webview 中有一个元素,其 Id 为 us
我正在开发 Expo 的 React Native 应用程序。我将项目弹出到 ExpoKit 并添加了 react-native-wkwebview-reborn。我遇到了这个库的一些问题,因为总是出
目标是在包含在 WKWebView 中的网页中调用回调函数。 evaluateJavaScript 在其参数包含换行符时中断,这意味着永远不会调用回调函数。 这是为什么? userContentCon
我正在使用 WKWebView加载 html 页面并使用 evaluateJavaScript 执行 javascript 函数。 这是我的做法。 使用大量对 javascript 和 CSS 文件的
我正在尝试获取 WebView 的实例,以便我可以对其调用 evaluateJavascript()。我编写了一个自定义匹配器,然后尝试将 WebView 分配给静态变量,如下所示: public
我有一个在以下环境中工作的应用程序: 单点触控 2.1 MonoDevelop 2.4.2 MacOS 10.6.8 iOS SDK 4.3 同一个应用程序,迁移到 iOS 5.0/5.1 和 Mon
我是一名优秀的程序员,十分优秀!