【问题标题】:Unable to terminate the app by BACK key (*No exit menu in the app)无法通过 BACK 键终止应用程序(*应用程序中没有退出菜单)
【发布时间】:2019-10-09 00:26:18
【问题描述】:

我多次尝试将我的应用提交给三星,但我总是被拒绝,因为手表的后退按钮或退出按钮不起作用。

我的应用程序是一个 HTML 中的多个页面,如 Tizen 文档中所述。

我不知道是不是 app.js 文件中的代码有问题,而单个 HTML 文件中的多个页面有问题。

App.js 文件:

( function () {

    window.addEventListener( 'tizenhwkey', function( ev ) {
        if( ev.keyName === "back" ) {
            var page = document.getElementsByClassName( 'ui-page-active' )[0],
                pageid = page ? page.id : "";
            if( pageid === "main" ) {
                try {
                    tizen.application.getCurrentApplication().exit();
                } catch (ignore) {
                }
            } else {
                tau.changePage("#main");
            }
        }
    } );
} () );

index.html 文件:

<!DOCTYPE html>
<html>

<head>
    <meta name="viewport" content="width=device-width,user-scalable=no">
    <title>BRStocks</title>
    <link rel="stylesheet" href="lib/tau/wearable/theme/default/tau.min.css">
    <link rel="stylesheet" media="all and (-tizen-geometric-shape: circle)" href="lib/tau/wearable/theme/default/tau.circle.min.css">
    <!-- load theme file for your application -->
    <link rel="stylesheet" href="css/style.css">

</head>
<body>

    <div class="ui-page ui-page-active" id="main">
        <header>
            <h2 class="ui-title">BR Stocks</h2>
        </header>

        <div class="ui-content content-padding">
            <ul class="ui-listview">
                <li><a href="#two" id="first-button" onclick="link(event);" ticker_id="BVSP">BVSP</a></li>
                <li><a href="#two" id="IBOV" onclick="link(event);" ticker_id="IBOV">IBOV</a></li>
                <li><a href="#two" id="ABEV3" onclick="link(event);" ticker_id="ABEV3">ABEV3</a></li>
                <li><a href="#two" id="AZUL4" onclick="link(event);" ticker_id="AZUL4">AZUL4</a></li>
                <li><a href="#two" id="BTOW3" onclick="link(event);" ticker_id="BTOW3">BTOW3</a></li>
            </ul>
        </div>
    </div>


        <div class="ui-page" id="two">
      <span id='ABEV3'>START</span>
      <header>
        <h2 class="ui-title" id="title">Loading...</h2>
      </header>
      <div class="ui-content">
        <div id="container">
          <pre><span id="ticker"></span></pre>
          <pre><span id="price"></span></pre>
          <pre><span id="pctChange"></span></pre>
          <a class="back" href="main" onClick="Clear();">Voltar</a>
        </div>
      </div>
    </div>
    <script>

    function Clear()
    {    
       document.getElementById('title').innerHTML="Loading...";
       document.getElementById('ticker').innerHTML = '';
       document.getElementById('price').innerHTML = '';
       document.getElementById('pctChange').innerHTML = '';
    }

    function link(event) {
        var element = event.target;
        var ticker_id = element.getAttribute("ticker_id");
        // do what you will with hike_id
            console.log(ticker_id);
            getPrice(ticker_id);
        return;
    }

            function getPrice(y) {


              if (self.fetch) {
                console.log("fetch ok!")
                fetch('xxxxxxxxxxxxxxxx')
                    .then(response => response.json())
                    .then(data => {
                console.log("Fetching...")
                //document.getElementById('title').innerHTML = data[y]['name']
                var CompanyName = data[y]['name'];
                var CompanyTicker = data[y]['ticker'];
                var lastPrice = Number(data[y]['lastPrice']);
                var pctChange = Number(data[y]['pctChange']);
                pctChange = pctChange.toFixed(2);

                document.getElementById('ticker').innerHTML = CompanyTicker;
                document.getElementById('title').innerHTML = CompanyName;
                document.getElementById('price').innerHTML = lastPrice.toLocaleString('pt-BR');
                document.getElementById('pctChange').innerHTML = pctChange.replace('.',',') + '%';

                if (pctChange < 0) {
                        console.log('Achou o sinal negativo');
                    document.getElementById('pctChange').className = 'redFont';
                }else{
                        document.getElementById('pctChange').className = 'greenFont';
                    }


                  });

              } else {
                console.log("Something went wrong...")
              }
            }


    function red(){
            var elements = document.getElementById('pctChange').innerHTML;
            console.log('Elemento: '+elements);
            if (elements.includes('-')) {
            console.log('Achou o sinal negativo');
              document.getElementById('pctChange').className = 'redFont';
            }else{
            document.getElementById('pctChange').className = 'greenFont';
        }
    } 
    </script>
    <script src="lib/tau/wearable/js/tau.min.js"></script>
    <script src="js/app.js"></script>
    <script src="js/lowBatteryCheck.js"></script>
    <script src="js/circle-helper.js"></script>
    <script type="text/javascript" src="jquery-3.4.1.min.js"></script>
</body> 
</html>

html 文件非常简单。多页与指向 id 标签的 href 一起使用(在这种情况下是 #two 和 #main 页面)。

出于某种原因,模拟器和真实小工具中的按钮无法正常工作。既不返回上一页,也不退出应用程序。

【问题讨论】:

  • 在带有鼠标的可点击设备上,我们使用“点击”事件,对于触摸屏,我认为您应该使用ontouch 事件来进行“返回”操作
  • 我会试试的。但在设备上也不起作用。使用小工具的真实物理按钮。

标签: javascript jquery tizen tizen-web-app samsung-galaxy-gear


【解决方案1】:

而不是

<a class="back" href="main" onClick="Clear();">Voltar</a>

试试

<a class="back" href="main" ontouchend="Clear();">Voltar</a>

(我在您的代码中随机选取了一个例如,您可以将该更改应用于每个“onClick”属性)

【讨论】:

    【解决方案2】:

    我刚刚发现,要让按钮工作(以及功能 tizenhwkey),您必须设置项目的 config.xml 文件。

    我刚刚添加了以下行:

    <tizen:setting background-support="disable" encryption="disable" hwkey-event="enable"/>
    

    现在功能和按钮都可以正常使用了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      相关资源
      最近更新 更多