Articles of JavaScript

在普通浏览器中从Android Webview打开链接作为popup窗口

所以我所拥有的基本上是一个加载页面的简单webview。 此页面包含一些在webview中打开的链接。 这就是它应该做的,所以它一切正常。 但是该页面中有一个链接应该作为popup窗口加载,所以我希望它在人们点击它时在普通浏览器中打开。 但正如我所说,所有链接都在webview中打开,所以链接也是如此。 我的问题是,如何在普通浏览器中打开此链接作为一种popup窗口? 它甚至可能吗? 链接是可变的,因此它总是在变化,它不能在应用程序中硬编码以在新的浏览器浏览器中打开。 有人可以告诉我是否可能以及如何做到这一点? 非常感谢你!

将Java代码重写为JS – 从字节创建音频?

我正在尝试将我用Java编写的一些(非常简单的)android代码重写为静态HTML5应用程序(我不需要服务器做任何事情,我想保持这种方式)。 我在Web开发方面有广泛的背景,但对Java有基本的了解,甚至在Android开发方面知识较少。 该应用程序的唯一function是获取一些数字并将其转换为字节的音频啁啾。 我将数学逻辑转换为JS绝对没有问题。 我遇到麻烦的地方是实际产生声音的时候。 这是原始代码的相关部分: import android.media.AudioFormat; import android.media.AudioManager; import android.media.AudioTrack; // later in the code: AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STATIC); // some math, and then: track.write(sound, 0, sound.length); // sound is an array of bytes 我如何在JS中这样做? 我可以使用dataURI从字节中产生声音 ,但这是否允许我在这里控制其他信息(即采样率等)? 换句话说:在JS中执行此操作的最简单,最准确的方法是什么? 更新 我一直试图复制我在这个答案中find的东西。 这是我的代码的相关部分: window.onload = init; var context; // […]

隐藏无法加载的图像

我有一个Android应用程序,它在Webkit视图中生成一些在本地呈现的HTML。 除了以下内容之外,HTML生成的细节并不那么重要: 它的大部分来自一个地方,我无法改变它 围绕该HTML的模板(包括页眉,页脚,HEAD等),CSS和Javascript都在我的控制之下。 大多数图像都在我的控制之下,并且与不可触摸的HTML分开呈现。 这些映像来自本地磁盘,不需要网络。 可以假设这些图像始终可用。 不可触摸的HTML包含理想情况下显示的图像。 如果网络不可用,则无法加载这些图像。 完整的HTML文件可能会在呈现之前很久就被存储到磁盘上。 即我们无法根据网络可用性呈现不同的HTML。 该应用程序可能至少在某些时候处于脱机状态,因此我希望处理无法加载图像的情况。 所讨论的图像主要是1×1跟踪图像,但可能包括在可用时应该可见的图像。 如果不调用JQuery或外部库,您会建议我的攻击计划是什么? 我有关于如何做到这一点的想法,但意识到他们有许多陷阱需要担心: 使用CSS选择器,选择所有未加载的图像(是否有这样的选择器?)并使用display:none; 。 使用Javascript,将每个图像上的alt属性设置为空字符串。 这需要在document.onLoad上完成吗? 检查网络的可用性,然后使用CSS隐藏所有图像@ href~ = ^ http。 我不确定如何/何时应用这种风格。 如果它有帮助,对于这个问题,我似乎有以下子问题。 目前尚不清楚其中任何一种的最佳策略: 如何确定图像的加载或网络状态。 如何隐藏/屏蔽未能加载图像,使得用户无法检测到图像丢失。 何时执行这些任务(例如文档/窗口何时完成加载?) 如何应用它们。 我们将非常感激地提出任何想法,代码和建议。

检测WebView内的可用内存

我正在构建一个包含运行一些JavaScript代码的WebView的应用程序。 JavaScript代码的分配很重,可能需要大量内存。 有时,所需的内存量超过了JavaScript可能需要的数量,并且崩溃了导致我的应用崩溃的WebView的Chromium进程。 我在我的应用程序中监听onMemoryTrim – 但在这种情况下,在内存超过1GB的设备上永远不会调用它。 (甚至没有TRIM_MEMORY_RUNNING_LOW )。 有什么方法可以检测到我的WebView内存不足并杀死它或让它知道(所以它可以释放内存)? 我试过polling performance.memory但它没有用。 如果在其中执行,则以下脚本会崩溃WebView: var a = []; var kek = () => { var b = []; for(var i = 0; i { let m = performance.memory; if(m.jsHeapSizeLimit – m.usedJSHeapSize < 1e5) { console.log("Memory limited") } else { a.push(kek()); } }); 有没有办法检测内存即将用完所以我可以优雅地处理它而不会崩溃的应用程序?

jQuery的ajaxfunction在Android PhoneGap应用程序中不起作用

我想通过移动应用程序中的ajax访问开放API,它在iphone中工作正常,但在Android phonegap应用程序中不起作用: returning error->”error message-null,typeerror-Result of expression ‘data'[null] is not an object and error status-parsererror” 是否需要遵循任何浏览器设置。 我想在android-phonegap应用程序中调用web服务: $.ajax({ url:’stringURL’, beforeSend: function(x) { x.setRequestHeader(‘Authorization’,’username/pwd’); }, dataType:”xml”, contentType:’application/xml’, timeout:10000, type:’POST’, success:function(data) { alert(data); }, error:function(XMLHttpRequest,textStatus, errorThrown) { alert(“Error status :”+textStatus); alert(“Error type :”+errorThrown); alert(“Error message :”+XMLHttpRequest.responseXML); } });

直播主题

对于那些对从 设备 到 网络服务器的直播感兴趣的人来说,这可能是一个非常有趣的主题。 (初级Android / Java)我终于find了一种如何从我的设备的相机直播到我的网络服务器(网站)的方法。 在wifi网络上需要大约。 在wifi网络上显示1帧/秒,它也适用于EDGE / 3G网络。 在这个主题/问题中,我想讨论新的技术,改进,关于直播的想法,因为我将与你分享我的(代码也很受欢迎。) 我的代码使用setOneShotPreviewCallback()重复从摄像头预览中获取快照,以调用onPreviewFrame()。 帧以YUV格式传送,因此raw2jpg()将其转换为jpeg编码器的32位ARGB。 NV21是YUV平面格式。 应用程序调用getPicture(),并在私有字节数组mCurrentFrame中生成图像的jpeg数据并返回该数组。 在此之后,byteArray mCurrentFrame获取Base64Encoded,并以HTTP POST方式连同字符串值Base64和自己的ID代码一起发送到我的网络服务器,这样人们就无法向其发送另一个图像。 在网络服务器上,它再次被解码并被放入文件test.jpg中。 PHP和Javascript正在Web服务器上运行。 PHP获取POST方法,JavaScript每750秒重新加载一次图像。 这基本上就是它的工作原理。 现在,我对您的想法,改进以及您想要添加/询问的其他内容非常感兴趣。 以下是我的一些问题: 1)带音频直播的最佳方法是什么? video录制或我的方法+录音? 2)你将如何处理video记录流? 3)您如何将音频流式传输到网络服务器? ( 主要目标 )(使用Java,PHP和JavaScript) 4)我还计划向我添加典型的实时流媒体function,例如,当有名人出现时,您可以在实时流式传输时显示他的名字,或者只是将sd目录中的图像添加到您的直播中。 您是否也会对其进行解码并覆盖图像,或者以某种方式将图像放入您的直播中? 这个主题主要针对问题,所以请对一些人来说这可能是一个很好的帮助。 因此我添加了50(woot!)代表的赏金。 真诚的,XverhelstX

使用PHP / Javascript检测应用内浏览器(WebView)

我为iOS和Android开发了一个应用程序,它使用应用内浏览器(Webview)从我的网络服务器访问HTML文件。 我不希望用户在不使用该应用程序的情况下访问此文件。 如果用户使用应用程序访问文件或直接通过智能手机/平板电脑/计算机上的浏览器,是否有可能检测到? 我认为使用PHP的解决方案要好得多,因为Javascript可以关闭。 至少Google Analytics可以区分Safari和Safari(应用内)。 它应该适用于iOS和Android的每个版本。 谢谢你的帮助。 解 经过多次尝试,我终于find了适合我的解决方案! iOS:您可以使用用户代理检测Safari和应用内浏览器之间的差异。 可能有一个更好的解决方案,但它的工作原理。 // Safari (in-app) if ((strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Mobile/’) !== false) && (strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Safari/’) == false) { echo ‘Safari (in-app)’; } Android:应用程序中的软件包名称存储在PHPvariables$_SERVER[‘HTTP_X_REQUESTED_WITH’] 。 // Android (in-app) if($_SERVER[‘HTTP_X_REQUESTED_WITH’] == “com.company.app”) { echo ‘Android (in-app)’; } 正如Tim van Elsloo已经注意到HTTP标头可以伪造,这不是绝对安全的。

React Native Android原生UI组件中的自定义事件

我想在Android上的React Native应用程序中使用OpenStreetMap磁贴,所以我正在尝试按照此处的描述包装OSMDroid本机UI组件。 在大多数情况下,它工作正常,但我无法弄清楚如何正确处理事件,特别是onScroll和onZoom 。 使用OSMDroid,您可以设置DelayedMapListener来处理事件,这非常简单。 我已经确认事件正在Java端正确处理,直到触发JS代码为止。 但是,它们并没有触发我的JavaScript代码。 根据文档 ,我在我的视图管理器的createViewInstance方法createViewInstance Java实现了事件处理程序: map.setMapListener(new DelayedMapListener(new MapListener() { public boolean onScroll(ScrollEvent event) { WritableMap eventData = Arguments.createMap(); // Fill in eventData; details not important ReactContext reactContext = (ReactContext)map.getContext(); reactContext.getJSModule(RCTEventEmitter.class).receiveEvent( map.getId(), “topChange”, eventData); return true; } public boolean onZoom(ZoomEvent event) { // Basically the same as above } }, 100)); […]

如何从代码中更改jquery移动翻转开关状态

我的Android / iPad应用程序上有一些jQuery Mobile翻转切换开关,我需要使用JavaScript动态更改其状态(开/关)。 我在这里寻找一个解决方案,( 用jQuery Mobile动态更改翻转切换的值 )我尝试了几种方式( .val(‘on’) .slider(‘enable’) …)但似乎控件是根本不工作。 这个问题有解决方案吗? 如何从代码中更改翻转开关状态?

如何在使用Android移动浏览器时获得连续的mousemove事件?

使用此代码: 0, 0 $(‘html’).mousemove(function(e){ $(‘#status’).html(e.pageX +’, ‘+ e.pageY); }); 在像Firefox这样的Windows浏览器中,当我移动鼠标时可以看到鼠标位置,但是当我在android(2.1)浏览器中运行此页面时,当我触摸屏幕时我无法获得连续事件,它只是触发事件时我点按屏幕,为什么? 以及当我触摸屏幕时如何获得连续的鼠标移动事件?