搜索
首页web前端js教程使用JavaScript和{X} - sitePoint控制网页

使用JavaScript和{X}  -  sitePoint控制网页

钥匙要点

  • 作者使用远程控制HTML演示文稿的示例演示了如何使用Android设备将远程说明发送到实时网页。>
  • 使用的技术堆栈包括{x} app,node.js,express,socket.io,deck.js和heroku。 JavaScript库
  • > socket.io,启用服务器和客户端之间的实时通信,这对于对来自Android设备的信号的实时响应至关重要。 具有JavaScript API的On {X}应用程序允许控制Android设备,并响应诸如传入的文本消息,GPS位置,电池寿命等事件。这是在发掘时用于发送服务器请求的。
  • >
  • 作者警告说,该方法不安全,并建议为任何通用的任何东西添加一层安全性。
  • >
  • >我丢了手机。我把它留在购物中心的沙发上,然后回来发现它消失了。有人通过可怕的偷窃艺术被送给了新手机。我通过网络将JavaScript代码远程发送到我的手机,该网络每当我发短信时都会向我发送设备的坐标。我将其跟踪到一家Sizzler餐厅,直到他们关闭电话,然后它永远消失了。我给自己买了一部新手机,但在一个功能强大的应用程序中看到了新的潜力,直到那时{x}}。 与我丢失的手机的恐怖故事相比,在本文中,我将分享该应用程序的不同用途。我想向您展示如何使用Android设备将远程说明发送到实时网页。我将使用遥控器控制HTML演示文稿的示例,但是可以扩展这些概念以执行许多有趣的事情。
  • 我们将使用以下技术:

一个Android设备

> on {x}

express
  • > socket.io
  • deck.js
  • > Heroku
  • 如果您没有Android手机,请不用担心!从理论上讲,您可以使用任何其他设备可以使HTTP调用以相同的节点/socket.io sorcery的工作方式使用。本文假设读者对node.js和javascript有一些了解,但是提供了源代码供您参考。
  • 什么是socket.io?
  • >在我们走得太远之前,我将解释socket.io的作用,因为它将显示在接下来的几个代码片段中。 socket.io是一个JavaScript库,可在服务器和客户端之间实时通信。它允许您在服务器和客户端上定义事件。例如,io.sockets.emit('eventThathathappened')创建了一个新事件,应用程序可以对此做出反应。为了对事件做出反应,只需设置这样的事件处理程序 - socket.on('eventThathApped',function(){})。
  • >聊天程序是一个常见的示例socket.io应用程序。该服务器听取来自任何客户端的传入消息,并在运行聊天应用程序的所有客户端上立即显示它们。我们将使用它在页面启动时立即从Android设备中响应信号。

    设置服务器

    >该演示的目录结构如下图所示。所有服务器端代码都存储在主JavaScript文件index.js中。前端HTML,CSS和JS存储在公共文件夹中。

    >

    使用JavaScript和{X}  -  sitePoint控制网页package.json文件定义了有关节点应用程序的依赖项和其他元信息。该文件的内容如下所示。请注意,依赖项中需要Express和socket.io模块。

    >

<span>{
</span>  <span>"name": "androidremotecontrol",
</span>  <span>"version": "0.0.1",
</span>  <span>"dependencies": {
</span>    <span>"express": "3.1.x",
</span>    <span>"socket.io": "latest"
</span>  <span>},
</span>  <span>"engines": {
</span>    <span>"node": "0.10.x",
</span>    <span>"npm": "1.2.x"
</span>  <span>}
</span><span>}</span>
由于此演示旨在托管在Heroku上,因此我们需要一个procfile,其内容如下所示(非常简单!)。

> 网络:节点索引

节点服务器

in index.js的以下行用于导入socket.io并设置服务器的端口。

<span>var http = require('http'),
</span>    express <span>= require('express'),
</span>    app <span>= express(),
</span>    server <span>= require('http').createServer(app),
</span>    io <span>= require('socket.io').listen(server),
</span>    port <span>= process.env.PORT || 5000;
</span>
app<span>.use(express.bodyParser());
</span>
app<span>.get('/', function(request<span>, response</span>) {
</span>  response<span>.sendfile('public/index.html');
</span><span>});
</span>
app<span>.post('/nudging', function(request<span>, response</span>) {
</span>  io<span>.sockets.emit('nudge'+ request.body.nudged);
</span>  response<span>.json({success: true});
</span><span>});
</span>
app<span>.get(<span>/<span>^(.+)$</span>/</span>, function(req<span>, res</span>) {
</span>  res<span>.sendfile('public/' + req.params[0]);
</span><span>});
</span>
server<span>.listen(port, function() {
</span>  <span>console.log('Listening on ' + port);
</span><span>});
</span>
io<span>.configure(function() {
</span>  io<span>.set('transports', ['xhr-polling']);
</span>  io<span>.set('polling duration', 10);
</span><span>});</span>
为了使socket.io在Heroku上工作,我发现我必须添加这些额外的行来配置Xhr-Polling而不是依靠Websocket(您可能不需要这些对于环境)。这些行告诉服务器等待10秒钟,然后再回答空的响应,如果它对GET或POST请求没有特定响应。

>

io <span>= require("socket.io").listen(server),
</span>port <span>= process.env.PORT || 5000;</span>
控制演示幻灯片

此演示使用Deck.js,但只要它具有JS调用以在幻灯片之间移动,就可以随意替换任何其他HTML演示模板。对于deck.js,只需下载并将其解压缩到公共文件夹。
io<span>.configure(function () {
</span>  io<span>.set("transports", ["xhr-polling"]);
</span>  io<span>.set("polling duration", 10);
</span><span>});</span>
>

>节点服务器中最重要的路由是邮政请求,它允许我们与演示幻灯片进行交互。该路线如下所示。

>

>先前的代码调用io.sockets.emit('nudgeleft')或io.sockets.emit('nudgeright'),具体取决于随请求发送的JSON数据。这里要提出的关键点是路线对JSON做出响应。如果您不这样做,您的请求将超时,因为它们将坐着,等待服务器的响应。此时,您可以在本地运行服务器,或将其推到Heroku进行部署。

>配置socket.io

app<span>.post('/nudging', function(request<span>, response</span>) {
</span>  io<span>.sockets.emit('nudge'+ request.body.nudged);
</span>  response<span>.json({success: true});
</span><span>});</span>
>其他JavaScript已添加到public/js/magic.js中的演示文稿中,如下所示:

第一行连接到我们的socket.io服务器window.location.hostname。出于此演示的目的,我们将保持简单,并将所有内容都放在一个域上。两个事件处理人员会收听任何要求向左或向右推动幻灯片的请求。如果注意到这些,我们会运行Deck.js的前期或下一个功能以移动幻灯片。

on {x}秘密酱

> on {x}是一个Android应用程序,它允许您通过JavaScript API来控制Android设备,并响应传入的文本消息,GPS位置,电池寿命等事件。在此演示中,我们将使用它在发行时发送这些服务器请求。

开始{x}

>

    >将应用程序下载到您的设备:https://www.onx.ms/#!downloadapppage。
  1. >在下载时,请访问桌面浏览器上的https://www.onx.ms,然后使用您的Facebook帐户登录{x}(不用担心,这只是用于在设备和设备之间同步代码在{x})上。
  2. >您将被带到{x}的仪表板。您可以转到食谱以探索已经有兴趣的令人兴奋的代码段,但是我们将直接研究本教程的自定义代码。
  3. 单击页面左上角的写代码链接以提出代码编辑器。
  4. 让该窗口打开,我们将在其中添加一些代码。>
  5. >在{x}
  6. 上进行编码
  7. >如上所述,{x}具有JavaScript API,可让您在Android设备上调用并检测许多事件。对于此演示,我们主要关注device.gestures.on方法。
>要做的第一件事是在{x}上打开代码编辑器返回该窗口,您会看到“规则名称:”,将其重命名为更友好的东西,例如“ Nudge演示控制”。我的ON {X}代码如下所示。请注意,您将需要用自己的服务器替换http://androidremotecontrol.herokuapp.com。

device.gestures.on组件用于设置事件处理程序。任何时候{x}检测剩下的轻推,调用了裸体处理程序。我们有一系列代码,基本上在手机上显示了手机的通知。您不需要这个,但我使用它进行测试以确保检测到轻推。该行的代码如下所示。

接下来,我们在{x}的device.ajax方法上使用将JSON数据发送到服务器。请注意,数据类型被明确定义为JSON。没有这个数据,数据无法正确发送。

>
<span>{
</span>  <span>"name": "androidremotecontrol",
</span>  <span>"version": "0.0.1",
</span>  <span>"dependencies": {
</span>    <span>"express": "3.1.x",
</span>    <span>"socket.io": "latest"
</span>  <span>},
</span>  <span>"engines": {
</span>    <span>"node": "0.10.x",
</span>    <span>"npm": "1.2.x"
</span>  <span>}
</span><span>}</span>
>当前,Onsuccess回调函数仅用于记录HTTP响应成功。这将映射到响应。如果您觉得如此倾向,则可以在此成功呼叫中添加更多信息,以在{x}上提供更多数据。同样,OnError回调用于记录发生的任何错误。

>

接下来,我们以900,000毫秒的方式打开对这些手势的检测。当您首先启用设备上的代码时,这将运行。您可能希望此代码运行超过900,000毫秒。我当前亲自设置的方式是,每次设备的屏幕启动时都会对其进行打开。因此,如果您想控制幻灯片,只需打开屏幕,您就有900秒的时间要疯狂。根据我在开发过程中发现的内容,您必须为此功能提供时间限制。如果您找到另一种方法,请在评论中告诉我。我很想更新它。

>更新代码以匹配您的服务器地址,并且已经准备就绪,请单击“保存并发送到电话”以通过网络将其发送到手机。从那里开始,通过演示文稿打开您的URL,打开Android设备的屏幕,然后尝试左右轻拍。如果一切顺利,您会看到幻灯片来回切换!

>在{x} logs

上查看

>如果您想在{x}上查看日志文件,则可以在Android手机上打开应用程序,选择添加的规则,然后选择“查看日志”。另外,当您登录您的规则页面,选择规则并单击“日志”选项卡时,您可以在{x}网站上的网站上看到它们。

安全性呢?

此方法在任何方面都不安全。如果其他任何人都算出您的演示文稿地址以及您要发送的帖子请求,他们可以轻松地将幻灯片从世界各地的任何地方切换。为此,您想到了与socket.io和{x}有关的任何其他想法,请记住,您需要在某个地方添加一层安全性,以使其在某个地方过于通用。

>

结论

这个演示背后的想法是表明,使用JavaScript,socket.io和一个漂亮的Android应用程序,您可以使用手机以多种方式来影响网页。闪烁的演示幻灯片左右只是开始。您可以根据位置,是否正在运行应用程序,电池用完了,可以更改网页显示的内容。 D很高兴听到它。出去并编码一些内容!

代码

>该演示的所有代码都已启动,并在GitHub上可用。我的跑步版本也可以在Heroku上找到。

>

经常询问有关使用JavaScript控制网页的问题(常见问题解答)

> JavaScript在控制网页中的作用是什么?这是一种编程语言,可让您在网页上实现复杂的功能。当网页是静态的,即显示静态信息时,可以使用JavaScript使页面更具互动性。它可以响应用户操作,创建动态内容,控制多媒体,动画图像等等。 JavaScript在用户的计算机上运行,​​使页面加载更快并减少服务器上的负载。

>

>我如何在网页中使用JavaScript?

javascript可以直接使用HTML嵌入HTML中<script>标签或使用<script>标签中的SRC属性在外部链接。该脚本可以放置在HTML文档的头部或身体部分中,但通常建议将脚本放在身体部分的底部,以防止阻止页面的渲染。<ancy> <p >有什么例子控制网页的JavaScript?<h3 >JavaScript可以以多种方式控制网页。例如,它可以更改HTML元素的内容和样式,在将其提交给服务器之前验证形式的数据,操纵Cookie,创建弹出窗口等等。 JavaScript也可以用于创建复杂的应用程序,例如在线游戏,交互式地图和2D/3D图形。创建动态和交互式网页。 HTML用于网页的结构,用于样式的CSS和功能的JavaScript。 JavaScript可以在HTML文档中访问和更改所有元素和属性。它还可以在网页中更改所有CSS样式。</script>

>我可以在没有事先编程知识的情况下学习JavaScript吗?

是的,您可以在没有事先编程知识的情况下学习JavaScript。但是,对HTML和CSS与JavaScript合作以创建交互式网页时,对HTML和CSS有一个基本的了解是有益的。在线有许多可用的资源,包括教程,视频和交互式编码平台,可以帮助您从头开始学习JavaScript。

>

> JavaScript仅用于Web开发?

对于Web开发,其使用不限于此。它也可以用于使用Node.js的服务器端编程,用于使用React Native和Ionic等框架的移动应用程序开发,以及使用Electron等框架创建桌面应用程序。

> javascript?

JavaScript是安全的,但是像其他任何编程语言一样,如果不正确使用,则可以利用它。遵循最佳实践以防止潜在的安全问题,这一点很重要。其中包括验证和消毒用户输入,避免使用est()使用()以及定期更新和检查您的代码是否漏洞。

可以使用JavaScript来创建动画吗?用于在网页上创建动画。随着时间的流逝,它可以更改HTML元素的CSS属性,从而创造动画的效果。 JavaScript还提供了requestAnimationFrame方法,该方法是专门设计用于创建光滑,浏览器优化的动画的。

什么是文档对象模型(DOM)? HTML和XML文档的编程接口。它代表文档的结构,并允许像JavaScript这样的编程语言操纵文档的内容,结构和样式。

>

> JavaScript如何处理错误?

JavaScript使用组合处理错误尝试,捕捉并最终陈述。 Try Block包含可能会出现错误的代码,Catch Block处理错误,最后块包含执行的代码,无论是否丢弃错误。

以上是使用JavaScript和{X} - sitePoint控制网页的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在JavaScript中替换字符串字符在JavaScript中替换字符串字符Mar 11, 2025 am 12:07 AM

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

构建您自己的Ajax Web应用程序构建您自己的Ajax Web应用程序Mar 09, 2025 am 12:11 AM

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

10个JQuery Fun and Games插件10个JQuery Fun and Games插件Mar 08, 2025 am 12:42 AM

10款趣味横生的jQuery游戏插件,让您的网站更具吸引力,提升用户粘性!虽然Flash仍然是开发休闲网页游戏的最佳软件,但jQuery也能创造出令人惊喜的效果,虽然无法与纯动作Flash游戏媲美,但在某些情况下,您也能在浏览器中获得意想不到的乐趣。 jQuery井字棋游戏 游戏编程的“Hello world”,现在有了jQuery版本。 源码 jQuery疯狂填词游戏 这是一个填空游戏,由于不知道单词的上下文,可能会产生一些古怪的结果。 源码 jQuery扫雷游戏

如何创建和发布自己的JavaScript库?如何创建和发布自己的JavaScript库?Mar 18, 2025 pm 03:12 PM

文章讨论了创建,发布和维护JavaScript库,专注于计划,开发,测试,文档和促销策略。

jQuery视差教程 - 动画标题背景jQuery视差教程 - 动画标题背景Mar 08, 2025 am 12:39 AM

本教程演示了如何使用jQuery创建迷人的视差背景效果。 我们将构建一个带有分层图像的标题横幅,从而创造出令人惊叹的视觉深度。 更新的插件可与JQuery 1.6.4及更高版本一起使用。 下载

如何在浏览器中优化JavaScript代码以进行性能?如何在浏览器中优化JavaScript代码以进行性能?Mar 18, 2025 pm 03:14 PM

本文讨论了在浏览器中优化JavaScript性能的策略,重点是减少执行时间并最大程度地减少对页面负载速度的影响。

Matter.js入门:简介Matter.js入门:简介Mar 08, 2025 am 12:53 AM

Matter.js是一个用JavaScript编写的2D刚体物理引擎。此库可以帮助您轻松地在浏览器中模拟2D物理。它提供了许多功能,例如创建刚体并为其分配质量、面积或密度等物理属性的能力。您还可以模拟不同类型的碰撞和力,例如重力摩擦力。 Matter.js支持所有主流浏览器。此外,它也适用于移动设备,因为它可以检测触摸并具有响应能力。所有这些功能都使其值得您投入时间学习如何使用该引擎,因为这样您就可以轻松创建基于物理的2D游戏或模拟。在本教程中,我将介绍此库的基础知识,包括其安装和用法,并提供一

使用jQuery和Ajax自动刷新DIV内容使用jQuery和Ajax自动刷新DIV内容Mar 08, 2025 am 12:58 AM

本文演示了如何使用jQuery和ajax自动每5秒自动刷新DIV的内容。 该示例从RSS提要中获取并显示了最新的博客文章以及最后的刷新时间戳。 加载图像是选择

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。