Articles of JavaScript

是否有一种Android的Firebug或JavaScript控制台debugging?

我正在开发一个移动网站。 它适用于Firefox桌面。 它适用于iPhone,但是当我在Android 2.x(也许更低)上按下button时。 我的JavaScript代码崩溃或还有什么… 我可以访问这些设备的logging器或JavaScript控制台吗? 更好的应该是一种Firebug应用程序。

在android webview中使用JavaScript

我试图从我的web视图中的JavaScript界面​​开始一个活动。 这个例子显示了一个敬酒。 我怎么可以打电话给class级而不是敬酒? public class JavaScriptInterface { Context mContext; /** Instantiate the interface and set the context */ JavaScriptInterface(Context c) { mContext = c; } /** Show a toast from the web page */ public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } } 这为html页面。 <input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> <script type="text/javascript"> function […]

Android浏览器的screen.width,screen.height&window.innerWidth&window.innerHeight是不可靠的

我正在开发针对桌面,平板电脑和智能手机浏览器的networking应用程序。 Web应用程序有一个使用Colorbox和iframe实现的灯箱 。 当浏览器窗口resize或平板电脑改变方向时,Javascript代码将查询窗口尺寸,以便调整灯箱的某些元素。 我遇到的问题是,桌面上的一切工作正常(Windows:IE,Firefox,Chrome,Mac:Safari),iPad和iPhone,但不是在Android智能手机(HTC)和Android模拟器。 在window.innerWidth & window.innerHeight当窗口的resize事件被多次触发时,它们总是返回不同的值给screen.width , screen.height , window.innerWidth & window.innerHeight 。 为什么Android浏览器会返回如此大的数值差异,我如何可靠地检测浏览器窗口的宽度和高度?

捕获在Android虚拟键盘上使用JavaScript键入的键

我有一个带有textarea的网页,我需要捕获用户键入的键(以便我可以用键入的键replace不同的Unicode字符)。 我目前的代码如下: $("#myTextArea").bind('keypress', function(event) { var keyInput = event.which; // call other functions }); 以上代码适用于PC和iPhone / Safari。 但是, 在Android (三星)平板电脑上使用Chrome时会失败 。 出于某种原因,当我在android虚拟(软)键盘上键入时,不会触发“按键”事件 。 Android版本是5.0.2。 如果我尝试使用“keyUp”或“keyDown”,那么对于所有的字符 (除了返回键,空格,退格键等) 总是返回229 。 即使keyCode始终为229,textarea也会显示用户input的正确字符。 这意味着设备知道哪个键被input,但不知何故,我无法得到处理这个事件(和关键代码)使用JavaScript。 以下是我迄今尝试过的替代scheme及其结果: $("#mainTextArea").on("keydown keyup", function(event) { // event.which and event.keyCode both return 229 $(document).on('keypress', function(event) { // function is not triggered $('#myTextArea').bind('input keypress', function(event) { // […]

Android 4.2.1,WebView和JavaScript界面​​中断

我有一个web浏览器添加的JavaScript界面​​,大多数设备上运行完美,除了那些运行Android 4.2.1的。 我删除了大部分的代码,并留下了一个非常基本的代码: this.webView.getSettings().setJavaScriptEnabled(true); this.webView.setWebChromeClient(new WebChromeClient()); this.webView.addJavascriptInterface(new Object() { public void handshake() { Log.d("JS", "handshake no params"); } public void handshake(String json) { Log.d("JS", "handshake with params: " + json); } }, "Android"); 在JavaScript的东西的testing代码如下所示: Android.handshake(); 但是我在logcat中得到这个: E / Web控制台:未捕获TypeError:对象[对象对象]没有方法'握手' 再一次,这个相同的确切的东西在我已经testing过的Android操作系统(<4.2.1)的设备中工作正常(最小版本是2.3.3)。 奇怪的是,如果我开始一个全新的项目,除了一个只有一个WebView的Activity,使用相同的代码,即使对于4.2.1,一切都可以正常工作,但是当它是我实际项目的一部分时, 。 没有什么我正在做的webview这是不包括在我提供的代码片段。 对我来说最奇怪的是,javascriptfind了Android对象,但它没有请求的方法(握手),那怎么可能呢? 任何帮助将不胜感激,因为这已经使我疯狂的过去2周左右(这是一个错误,我回到所有的时间,然后放弃等)。 谢谢。

HTML5audio无法通过JavaScript播放,除非手动触发一次

我试图让一个小的声音文件自动播放使用标签和JavaScript来启动它。 <audio id="denied" preload="auto" controls="false"> <source src="sound/denied.wav" /> </audio> 然后通过javascript,在适当的时候: $('#denied')[0].play() 在我的桌面上的Chrome上正常工作。 在Android 4.1.1中,声音不会播放,除非我在JavaScript尝试播放之前在HTML5audio控件上点击“播放”。 所以基本上,Android浏览器(股票或海豚)不会播放audio,除非用户在JavaScript之前的某个时刻启动它。 这是打算? 有没有办法解决?

在Android上强制使用正确的CSS3转换百分比解释

医生 在Android Chrome和默认浏览器中,获取以下链接中显示的机制以performanceGPU加速。 更新2 (2014-01-13 13:25:30Z):根据下面的bref.it的评论,报告的行为是固定的Android 4.4 KitKat – 但我下面描述的修复现在打破了! 草地的法律。 UPDATE 1 (2012-11-01 17:54:09Z):马车行为是可以从变换matrix推导出来的,这是由变换元素的计算样式报告的,它返回一个像素值。 我会试着写一个Modernizrtesting来为任何可能的解决scheme铺平道路。 我已经开发了一个滑动容器的机制,以显示全宽,水平排列的子部分。 滑动标签,基本上。 因为有很多性能密集型的东西,所以精心制作的Javascript会继续下去,所以我希望将JS降到最低,并尽可能地在CSS中完成纯粹的风格。 我觉得我做得很好,考虑到 – JS只是改变了包装的一个属性: (左) http://jsfiddle.net/barney/VPJuq/ (移动设备可以附加/显示/这些小提琴URL自己看结果) 关于这是如何工作的一个词:将标签视为inline-block允许我指定white-space: nowrap (在最后几条规则中的其余代码基本上折叠了标签之间的空白),并允许它们水平堆叠没有清理/返回,一直保持其父母的全部宽度。 从那里,为包装设置一个负的左偏移量就是魔法。 很酷,嗯? 现在,我正在开发的接口是在本地移动应用程序中运行 – 应用程序的核心function依赖于尖端的移动专用技术(不要求 – NDA) – 通过UIWebView,唯一的目前支持该技术的平台是Android。 在这里,我的问题是双重的: transform: translate比left或margin-left过渡更加平滑( translate3d ),到一个真正真正可取的点,边界线至关重要 – 特别是在Android上,看起来是非翻译的在最新的操作系统的最新手机上,过渡仍然是冰冷的。 考虑到这一点,问题的症结在于Android在translate方面似乎以不同的方式推断盒子模型。 为了演示,这是一个基于transform的版本,它和前一个小提琴完全一样,并且支持所有支持translate3d的浏览器。 (带翻译) http://jsfiddle.net/barney/EJ7ve 如果您在iPhone上检查(再次通过追加/show ),您会注意到iPhone上的帧速率有所改善。 对于在Android上运行的Firefox也是如此,可以说Chrome和Android上的默认浏览器也是如此,除了这里的-100%的translateX偏移量指的是所有三个标签所占用的空间,所以包装滑动就足够了没有任何选项卡可见。 这很奇怪,因为转换百分比被指定为与正被转换的元素的全框模型相关 – 并且计算样式明确地将包装宽度描述为与其父项相同(不是如结果所暗示的那样,被拉伸3倍容纳标签)。 我们可以形容这是一个错误? […]

如何确定Android WebView何时完全加载?

我想知道如何确定一个WebView 完全加载完成 。 让我完全定义。 所有redirect都发生了 该页面是可见的显示,没有任何尚未加载 这个问题的答案不好: WebViewClient.onPageFinished() – 如果存在redirect加载页面,将多次触发。 它也会在页面显示之前触发。 PictureListener.onNewPicture() – 每次屏幕更改和AFAICT每次redirect时都会触发。 我怎么知道哪一次是最后一次? WebChromeClient.onProgressChanged() – 与onPageFinished相同的问题。 (在David在下面提出这个解决scheme之后添加 Thread.sleep(5000) – 应该是显而易见的,为什么这是不可接受的。 当然,上述的巧妙组合将是完美的。 为什么我想知道你问这个? 因为一旦webview被完全加载完成,我想要一次注入一些javascript。