【问题标题】:LG webOS back eventLG webOS 回归活动
【发布时间】:2019-08-21 08:19:00
【问题描述】:

目前我正在开发一个 LG webOS 应用程序(使用 Vue.js)。一切正常,除了当我按下遥控器上的后退按钮时,后退事件不会触发。这导致我不得不将函数分配给返回上一页的另一个按钮(不是用户友好的),而不是正常的返回按钮。

(仅供参考:我使用的是 webOS 标牌显示器)

我已阅读有关历史 API 和处理返回事件 (webOS Back Button) 的文档并尝试了以下方法,但我尝试的方法均无效:

  • appinfo.json中的disableBackHistoryAPI设置为true,然后在按下返回按钮时手动捕获keydown事件(键码461);
  • appinfo.json 中的disableBackHistoryAPI 设置为false,然后为popstate 事件添加事件监听器
  • 反之亦然(因为你永远不知道)

即使试图捕捉后退按钮按下事件(所以捕捉键码 461)也不起作用。该应用程序识别所有其他键码,但按下后退按钮根本不做任何事情(不触发任何事件)。有人对此有任何想法吗?

为了确保问题本身不受应用程序限制,我安装了以下应用程序Back Button Application。相同的结果:没有返回事件。

捕捉关键事件的代码(记录除461之外的所有关键代码):

window.addEventListener('keydown', evt => {
    evt = evt || window.event
    console.log(evt.keyCode)
    if (evt.keyCode === 461) {
        router.go(-1)
    }
  })

后退按钮正在在 LG webOS 模拟器 (v4.0) 上注册。如前所述,我使用的框架是 Vue.js,我使用 Cordova Toast 将我的项目编译到 LG webOS(将来会编译到三星 Tizen)。

-- 赏金已过期,但仍在寻找答案--

【问题讨论】:

  • 你能把代码贴在你试图捕捉“keydown”事件的地方吗?
  • @burakk 添加了代码!
  • 奇怪的问题,但关键是正常工作吗?如果您可以抓住除此之外的任何其他键,那么遥控器可能存在硬件问题?
  • @noa-dev 可以肯定的是,我尝试了不同的遥控器但仍然是同样的问题。

标签: javascript keycode webos smart-tv


【解决方案1】:

尝试将此代码添加到 index.html 的 head 部分,并将 "disableBackHistoryAPI": true 添加到您的 appinfo.json

<script src="webOSTVjs-1.1.0/webOSTV.js" charset="utf-8"></script>
<script src="webOSTVjs-1.1.0/webOSTV-dev.js" charset="utf-8"></script>
<script type="text/javascript">

    window.addEventListener("keydown", function(e) {
        console.log("[keyCode] : " + "[" + e.keyCode + "]");

        switch (e.keyCode) {
            case 461:
                console.log("Back key pressed");
                webOS.platformBack();

                break;
        }
    });

</script>

请记住,LG webOS TV 不支持 ES6。我猜你已经知道了,并使用 Babel 转换代码。

更多信息请参考this页面。

【讨论】:

  • 感谢您的回复。不幸的是,这会捕获除461 之外的所有键码。发生了一些事情,使应用程序/电视拒绝返回按钮来触发任何事件。即使尝试不同的遥控器也没有什么不同。关于我正在使用的框架和我的模拟器体验,我对我的帖子进行了一点编辑。我怀疑这与它有什么关系。
  • 您能在调试控制台中看到“[keyCode] :”条目吗?
  • 是的,我可以。在模拟器上一切正常,但只要我在真正的电视上打开应用程序,它就不起作用(捕获键码461)。这可能与电视是标牌显示器有关吗?
  • 我从未在标牌显示器上工作过,但如果代码在模拟器上运行良好,那么您可能是对的,我们可以得出结论,后退按钮在标牌显示器中不起作用。不过,您应该得到 LG 的确认。
  • 好的,我会这样做的。不过还是谢谢你的努力!如果我找不到任何答案,我会接受你的答案/将赏金分配给你。
【解决方案2】:

您可以使用遥控器上的“返回”按钮吗? 我这里也有同样的问题。

此代码查看除后退按钮之外的其他按钮。

    window.addEventListener("keydown", function(inEvent){   

        if(window.event) {
            keycode = inEvent.keyCode;
        } else if(e.which) {
            keycode = inEvent.which;
        }

        document.getElementById("BtnControle").innerHTML = keycode;

    });  

【讨论】:

  • 不,遗憾的是从未找到解决方案。我将返回事件分配给停止按钮(上面有正方形的按钮)。非常可耻的是它不适用于应该分配给任务的按钮..
  • 它在电视上可以正常工作,但在模拟器上不行。如果你有一台 LG 电视,你可以在那里设置测试,看看它是否能按预期完美运行。
【解决方案3】:

在我的 appinfo.json 我添加了这个:disableBackHistoryAPI: true;

从那里开始下面的代码开始工作:

<script type = "text / javascript">
         window.addEventListener ("keydown", function (inEvent) {
             if (window.event) {
                 keycode = inEvent.keyCode;
             } else if (e.which) {
                 keycode = inEvent.which;
             }
             switch (keycode) {
                 case 461: history.back (-1); break;
                 case 38: document.getElementById ("TesteTit"). innerHTML = "up"; break;
                 case 40: document.getElementById ("TesteTit"). innerHTML = "down"; break;
             }
         });
</script>

如果您可以在您的应用上测试它,请告诉我它是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-15
    • 2022-12-11
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多