Articles of JavaScript

Android的webview SKIPS JavaScript甚至与setJavascriptEnabled(true)和WebChromeClient

(使用三星Galaxy Tab和Android 3.0,这是打算在每个3.0+平板电脑上工作,就像在他们的浏览器,而不是webview) 我有一个CSS和jQuery的页面,在浏览器,Android浏览器和iOS设备上加载罚款,但android webview拒绝加载它一贯。 我已经缩小了这个问题,只是简单地跳过JavaScript的负载(通过复制一些webview的JavaScript演示应用程序的问题)。 为什么是这样? 这里是完整的testingHTML代码http://pastebin.com/GmE2vEYx 这就是我所说的: myWebview.loadUrl("file:///android_asset/myPage.html"); myWebview.getSettings().setJavaScriptEnabled(true); myWebview.setWebChromeClient(new WebChromeClient()); 这三个调用的顺序不会影响结果。 myWebview.getSettings().setJavaScriptEnabled(true); myWebview.setWebChromeClient(new WebChromeClient()); myWebview.loadUrl("file:///android_asset/myPage.html"); 我注意到的一件事是,如果你花时间(通过在debugging器中暂停一个断点的应用程序),那么JavaScript将更加一致的加载。 这导致我进行了一些尝试使应用程序加载速度变慢的牵强的实验,但这实际上并不是所需的用户体验。 我真的希望Android的webview真的不是移动开发的IE6。 其他事实: 如果删除包含所有Jquery的<script>标记,则页面会快速加载所有CSS格式。 一旦Jquery被添加,什么都不加载。 我还发现了几个其他问题,遇到完全相同的问题,许多人没有回答,或没有确切的答案OP是寻求:( 请参阅: Android:无法获取JavaScript即使使用setJavaScriptEnabled也可以在WebView上工作(true) 页面重新加载(Webview.loadUrl)导致Javascript未被(完全)处理 http://groups.google.com/group/android-developers/browse_thread/thread/9962064ef217a5a7# JavaScript有时在android的webview中不起作用 Android WebView不加载JavaScript文件,但Android浏览器加载它很好 Android的Webview无法处理JavaScript? build议? 让我们来看看这个! android文档说webview有局限性,但是我不知道限制在哪里,因为人们总是在制作HTML CSS JS应用程序!

如何在移动networking应用程序(Android Browser / iOS-Mobile Safari)上禁用横向/纵向切换

我正试图禁用影响我的HTML5移动应用程序的网页的电话轮换。 没有重新布局,resize,orientationchange行为。 我需要它,以便旋转手机,加载的初始布局将保持不变,迫使用户以原始方向使用应用程序。 用户逻辑有许多微妙之处,我真的觉得这是我的应用程序需要的,所以请不要评论这个select,而是帮助我的问题在第一句话。 我试着听两个'orientationchange'和'resize'的事件,并调用preventDefault并停止传播,以防止任何浏览器行为重新组织页面,以适应横向视图转动。 那么,显然阻止任何(理想)。 window.addEventListener("orientationchange", function (e) { e.preventDefault(); e.stopPropagation(); }, false); window.addEventListener("resize", function (e) { e.preventDefault(); e.stopPropagation(); }, false); 完全没有区别。 浏览器仍然在Android上重新组织(pre2.1和之后)和iPhone 4-5页面。 尝试过meta标签 <meta name="viewport" content="initial-scale=1.0, user-scalable=no /> 然后生气,尝试 <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" /> 没有什么区别。 在StackOverflow上狂怒地看着,看到我在第一步做了什么,在那里放了几次…再次尝试,以确保我没有搞砸了。 没有工作。 吸了我的骄傲,然后决定由于骄傲继续跑进一堵砖墙,然后真的吸了我的骄傲,张贴在这里。 HALP。

phonegap:是否有可能从Javascript检测swipeLeft和SwipeRight触摸?

我问如果一个Phonegap应用程序能够识别JavaScript中的swipeLeft和SwipeRight相关的事件。

fabric.js调整canvas以适合屏幕

我目前正在用离子和cordova开发移动设备上的应用程序(android和iPhone)。 我想编辑一张图片。 我使用fabric.js库来做到这一点。 Fabric.js将图像和其他项目转换为canvas。 然后我在canvas(贴纸)上添加一些图像,并将其导出为图像(dataURL)。 所以canvas的大小是非常重要的,因为它是一个质量因素(导出基于小canvas的图像将导致质量差)。 canvas大小约为607 * 1080像素(取决于拍摄照片的设备)。 我想适应它在屏幕上不失去质量(如下面解释,我不能调整canvas不失去质量)。 我尝试了3个想法,但没有人工作。 调整canvas大小 :导致质量丢失(导出的图像将具有canvas大小) 适应视口 :cordova不允许更改移动设备上的视口。 有一个解决方法,但它会打破我的devise(非常小的导航栏,较小的菜单,…) 使用CSS3缩放属性 :它像桌面上的魅力,但有移动设备上的事件映射问题(我没有尝试在iOS上,但问题发生在Android Web视图)。 事件映射不缩放。 canvas被缩小,但不可能与canvas元素交互。 如果一个canvas元素(贴纸)位于x:100 y:100,当我将缩放属性设置为0.5时,该元素将位于(50,50),不再在(100,100)。 有没有什么办法可以根据android webview的缩放属性更正事件映射? 我不知道是否有其他的方法来做到这一点,但我被困在这个问题3天,我花了很多时间在论坛,fabricjs文档和谷歌,我没有find任何工作的解决scheme或别的东西可以帮助我。 编辑: 下面有2个工作解决scheme。 检查我的答案,看看如何用CSS来做到这一点。

如何从phonegap插件获取android服务返回消息

我正在尝试为PhoneGap(Android)制作一个插件,它允许我的JavaScript发送和接收来自服务的消息。 我确切的问题是,因为消息返回asynchronous,我不能发送PluginResult插件的执行function。 这是插件代码: public class ServiceClient_plugin extends Plugin { Messenger messenger_service=null; boolean connected_to_service=false; final Messenger messenger_receive = new Messenger(new IncomingHandler()); @Override public PluginResult execute(String action, JSONArray data, String callbackId) { PluginResult result = null; try { if (action.toUpperCase().equals("CONNECT")) { result = ConnectService(); } else if (action.toUpperCase().equals("DISCONNECT")) { result = DisconnectService(); } else if (action.toUpperCase().equals("IS_CONNECTED")) { […]

swipeleft / swiperight在jquery mobile垂直滚动期间触发

问题是,当我想要垂直滚动时,swipeleft / swiperight事件触发。 我们正在使用jQuery的手机1.1.0版本和jQuery的1.7.1。 代码是: $(document).delegate('#quizResumePage', 'swipeleft swiperight', function (event) { event.stopImmediatePropagation(); if (event.type == 'swipeleft') { $('#btnnext').trigger('click'); } else if (event.type == 'swiperight') { $('#btnprevious').trigger('click'); } event.preventDefault(); }); 那么为什么刷卡事件触发时,我想scorll页面? 这个问题发生在三星Galaxy的android 2.3.5 … 任何人都可以帮我解决这个问题吗? 提前致谢…

在build议的单词提示时,按键事件不会在Android的Firefox中触发

我有一个search字段,在键入时触发自动完成search。 我有它触发键。 这在大多数浏览器中都能正常工作,但在Android上的Firefox上,这是行不通的。 键入事件似乎没有被触发。 只有在Android键盘设置中打开了单词build议,才会发生这种情况。 我在Googlesearch上看到,自动完成search在那里工作的设置相同,所以显然可以这样做。 我不知道怎么样? 这是我需要听取的特殊事件吗? 此外,我试图听取事件的变化,keydown和按键,但没有被触发。 HTML: <input type="text" id="searchField" autocomplete="off" spellcheck="false" autocorrect="off" /> jQuery事件绑定: $('#searchField').keyup(function (e) { var searchValue = $(this).val(); searchApi._executeAutocomplete(searchValue); }); 注意: 有时,关键事件被触发,这通常是一个不会导致形成单词的过程的关键。 这里最明显的是Enter ,它始终触发。 另一个是空间 ,它触发因为没有单词包含空格,因为空间是一个单词完成的定义。 如果删除的最后一个字符不在一个单词内, 则 退格触发。 这意味着如果你刚刚删除了一个单词的最后一个字母(所以它是字段的开始或光标跟在一个空格之后),但是如果你删除了光标仍然处于单词末尾的一些字符紧接着一封信。 基本上,如果按键导致键盘应用程序的某种单词build议,则不触发关键事件。 作为一个方面的说明,我可以说,一切工作正常在同一设备上的Chrome。

固定定位在Android 2.3浏览器应该工作…应该不是吗?

从网上看,我的理解是,固定的定位应该在Android 2.3中工作,如果有一个正确的元标记设置。 这是我目前的视口设置。 <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" /> 在我的Galaxy S2上,具有固定位置的div(基本上它是页面顶部的一个细页眉)在向下滚动页面时不会保留在原位。 它随着页面移动。 但是,当您停止滚动时,它会再次跳转到页面的顶部。 这是Android 2.3的预期定位行为吗? 有没有更好的方式来做到这一点(希望不会涉及到iPSroll的庞大复杂性)?

Android – 如何使用PhoneGap Share插件

我正在尝试使用PhoneGap Share插件,这个插件应该会显示原生Android“共享”窗口,允许用户select要共享的应用程序。 https://github.com/phonegap/phonegap-plugins/tree/master/Android/Share 我有一个超链接调用以下代码(在github上提供)。 window.plugins.share.show({ subject: 'I like turtles', text: 'http://www.mndaily.com' }, function () {}, // Success function function () { alert('Share failed') } // Failure function); 当试图在手机上debugging应用程序时,出现以下错误: 无法在file:///android_asset/www/index.html处调用未定义的方法“show” 我需要做些什么才能使这个工作?

Android webview“未捕获的SyntaxError:意外的令牌非法”

在我的android程序中,我得到了一个webview,并需要dynamic地设置值到webview元素(textareas,checkbox等)。 我有一个JavaScript方法从程序接收值,并执行string操作,并将值存储到正确的元素。 但我总是得到这个错误…有点卡在这里。 任何帮助将不胜感激。 我成功地执行了w3schools TryIt编辑器中的脚本,但没有在程序中工作! final WebView webView = new WebView(getApplicationContext()); LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1); webView.setLayoutParams(params); webView.setBackgroundColor(Color.LTGRAY); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDomStorageEnabled(true); webView.setWebChromeClient(new android.webkit.WebChromeClient()); webView.setWebViewClient(new WebChromeClient()); webView.loadData("<!DOCTYPE html><html><body>"+ questionsArray[questionIndex] +"</body></html>", "text/html", "UTF-8"); webView.addJavascriptInterface(javaScriptInterface, "HtmlViewer"); scrolRootLayout.addView(surveyWebView); 和我的Javascript方法来设置webView中的textareas值 function myFunction(var_) { var str = var_.replace("-!!!-",""); var pipeSplitedArray = str.split("||"); for(var i=0; i<pipeSplitedArray.length-1; i++) { if(pipeSplitedArray[i].indexOf("-!@!-") == […]