Articles of WebKit

从API 17开始,Android WebView中不推荐使用私有浏览。有什么替代方案?

对于允许启用私有浏览的WebView构造函数,API规范如下所示: (来自http://developer.android.com/reference/android/webkit/WebView.html ) WebView(Context context,AttributeSet attrs,int defStyle,boolean privateBrowsing) 在API级别17中不推荐使用此构造函数。不再直接通过WebView支持私有浏览,并将在以后的版本中删除。 首选使用WebSettings,WebViewDatabase,CookieManager和WebStorage对隐私数据进行细粒度控制。 从API 19(KitKat)开始,私人浏览被禁用。 尝试使用值true调用此构造函数会导致IllegalArgumentException。 建议的替代方案在复制隐私浏览行为方面甚至不会有效。 CookieManager类是一个单例,所有设置都应用于整个应用程序。 使用这种方法没有“对隐私数据的细粒度控制”。 CookieManager提供的唯一控件是能够为应用程序中存在的每个WebView完全禁用cookie。 此更改意味着第三方浏览器无法再以任何身份复制Google自己浏览器的隐私浏览function。 我非常感谢有关解决此问题的任何建议。 到目前为止,我在API中找不到任何可能使之前的私有浏览function相似的内容。

每个基于WebKit的浏览器都使用Omniture崩溃网站。 为什么?

实际上,更准确的说法是: 每个基于WebKit的浏览器都在http://m.allrecipes.com/上崩溃,但仅在三星Continuum SCH-i400手机中崩溃。 我正在尝试实现一个基于WebView的浏览器,主要用于学习目的(市场上有太多的东西,为什么要添加一个?),我对能够多快地提出一个基本的工作方式印象深刻。 我在Samsung Continuum手机的众多网站上进行了测试, 除 m.allrecipes.com 外 ,它们都完美无缺。 每当我尝试加载该网页时,我收到以下NullPointerException: E/AndroidRuntime(3147): FATAL EXCEPTION: http10 E/AndroidRuntime(3147): java.lang.NullPointerException E/AndroidRuntime(3147): at android.net.http.CertificateChainValidator.doHandshakeAndValidateServerCertificates(CertificateChainValidator.java:194) E/AndroidRuntime(3147): at android.net.http.HttpsConnection.openConnection(HttpsConnection.java:308) E/AndroidRuntime(3147): at android.net.http.Connection.openHttpConnection(Connection.java:358) E/AndroidRuntime(3147): at android.net.http.Connection.processRequests(Connection.java:219) E/AndroidRuntime(3147): at android.net.http.ConnectionThread.run(ConnectionThread.java:113) 在我的代码中无法find解释,我在访问m.allrecipes.com时试图在这台Samsung Continuum手机上看到其他浏览器的行为: 调查结果非常有趣:Dolphin,Opera,iBrowser和其他人没有任何问题 。 但是,在使用相同的堆栈跟踪访问m.allrecipes.com , Free Private Browser , Voice Browser和Easy Browser都会立即崩溃。 因此,如果您可以将手放在Samsung Continuum SCH-i400设备上,这个问题很容易重现。 我知道解决这个问题的最快捷最简单的方法是使用不同的浏览器或者摆脱我的手机。 但我希望了解问题的根源,因为它可能会在使用WebKit时指出潜在的问题,也可能在其他手机上。 所以我的问题基本上是: 什么在m.allrecipes.com是如此特殊,以至于它触发了这个WebKit+Continuum错误? 什么在Samsung Continuum SCH-i400是如此特殊,它只在这个网站上失败,只有基于WebKit的浏览器? […]

Android WebKit专注于textarea不会绘制背景图像

Android WebKit在textareas上绘制白色背景+边框,并在有焦点时输入。 我如何阻止它这样做? 我试过改变-webkit-tap-highlight-color,-webkit-appearance,-webkit-backface-visibility,outline和一些其他的东西,似乎没什么用。 帮帮我!

点击后为什么触摸启动事件?

这有点奇怪,我觉得它确实适用于早期的移动浏览器:在Android上的Chrome和iOS上的Safari中,似乎touchstart事件在点击事件之后被触发,而不是之前。 这什么时候改变了? 一个简单的例子: jQuery(function($) { var touched = false; $(‘#clicky’).on(‘touchstart’, function(evt){ touched = true; evt.preventDefault(); }) .click(function(){ if (!touched) { alert(“somehow touch didn’t fire”) } }); }) 运行这个小提琴,你会看到警告可以在Android和iOS上popup,它应该实际上永远不会显示! http://jsfiddle.net/quxnxu7d/2/

是否在Android浏览器中使用了webkit版本?

有没有办法告诉在某个特定手机的Android浏览器中使用哪个版本的webkit软件? 真正伟大的是,如果有一个URL,您可以浏览以获取该信息。 但任何其他方式也会很好。 如果你知道webkit版本,你知道html5支持多少。

最近发生了很多DeviceMotionService的NPE

最近我在Google Play商店中的应用获得了很多DeviceMotionService的NPE。 以下是堆栈: java.lang.NullPointerException at android.webkit.DeviceMotionService$2.run(DeviceMotionService.java:103) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:1067) at java.lang.Thread.run(Thread.java:856) 我对这个问题一无所知。 我在我的应用程序中使用了WebView 。 但我检查了源代码。 它似乎是android framework / webkit中的一个深层function。

使用firefox作为Android webview的渲染引擎

任何人都有一种感觉,用Android中的firefox替换webkit引擎以进行webview渲染需要付出多少努力? 我对一些function的webkit引擎很不满意。

Android :: Webview删除DIV的滚动条

我创建了一个带有可滚动div的小网页。 当我在浏览器中加载它时,它工作正常。 但是当我在Android内部的webview中加载它时,它不会让我滚动div。 有没有解决方法或我必须使用不同的设计? 我在谈论这样的网站。

单击未注册的事件

这是Android应用的主屏幕。 一切都在WebView中呈现。 当我点击左下角的按钮时,此叠加层将打开,其内容会动态添加到其中。 当我点击其中一个图标时,它应该被添加到左侧的栏中。 它确实如此。 但是当我点击另一个图标时,根本没有任何事情发生。 它应该调用的函数不运行(我通过在它的开头放置一个alert ()检查)。 当我关闭叠加层(左上角的按钮),再次打开它(左下角)时,我可以添加另一个图标。 但是,在覆盖关闭并再次打开之前,下一个事件将不会触发。 我不知道这是多么容易解决,因为我不确定每个人是否都会遇到这个问题。 我(在运行Android 4.0.4的三星GT-P6200上)做的。 其他人也向我抱怨过这件事。 然而,在SDK中包含的Android模拟器中,Android 4.1和4.1似乎没有出现这种情况。 这似乎是一个4.0问题。 叠加层中的图标如下所示; ‘ + label + ‘ 我使用jQuery搞乱DOM,如果它有任何区别。 function launchApp (i) { // Putting an alert () here indicates that the function doesn’t get called, because no alert box appears on the screen // try { if (! launcherEdit) […]

如何使用WebView启用WebKit的Android应用程序远程调试/检查器?

我需要在调试时检查android应用程序中的javascript执行(webview小部件); 通过SDK和usb电缆和/或http / websockets; 从destop计算机(例如在桌面上运行的chrome)。 Webkit的源代码包括在cpp级别可访问的DebuggerServer实现(platform_external_webkit \ Source \ WebKit \ android \ wds \ DebugServer.cpp),如果启用了标志WDS,则绑定(在构建时?) Source \ WebKit \ android \ jni \ WebCoreFrameBridge.cpp:#if ENABLE(WDS)Source \ WebKit \ android \ jni \ WebCoreFrameBridge.cpp:WDS :: server() – > addFrame(frame); 服务器的默认端口是9999 消息来源显示所有内容都已实现(在Cpp级别)以启用该function,但我没有find任何参考搜索网页,以获得在webroid的检查器界面自动化的adroid设备中使用javascript级别的实时调试的经验。 1.-以二进制forms存在的function是否在实际的Android设备中执行? (adroid的webkit分发是在没有启用WDS标志的情况下构建的?:-() 2.-可以从javascript或应用程序(在java级别)启用/使用远程调试function,例如在启动应用程序时? 3.-如果可以启用webkit检查器/调试器function,如何使从远程应用程序进行交互成为可能? (例如,来自使用websockets的另一个javascript应用程序,或桌面计算机上的chrome)。 一些解释https://developers.google.com/chrome-developer-tools/docs/remote-debugging#remote等机制的段落会很好! 提前感谢任何有关此主题的信息或参考资料。 我认为重要的是在javascript级别启用远程调试(在设备中),以使HTML5应用程序的现代开发和快乐的调试体验成为可能。 欢呼,啤酒。