0

我正在尝试为 iOS 创建一个非常简单的电话间隙应用程序。我正在使用查询手机。问题是,我无法在单击按钮时触发 javascript 事件。
我现在拥有的代码:

<!DOCTYPE html>
<html>
<head>
    <title>Title</title>
    <meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="js/jquery.mobile-1.2.0.css" />
    <script type="text/javascript" charset="utf-8" src="cordova-1.8.1.js"></script>
    <script type="text/javascript" charset="utf-8" src="js/jquery-1.8.2.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.2.0.min.js"></script>
    <script type="text/javascript">
        document.addEventListener("deviceready", onDeviceReady, false);

        function onDeviceReady() {
        }

        function showAlert() {
            navigator.notification.alert("Cordova is working");
        }

    </script>
</head>
<body>
    <div data-role="page" id="options" data-add-back-btn="true" data-back-btn-text="Atgal">
        <div data-role="header" data-position="fixed">
            <h1>Title</h1>
        </div>
        <div data-role="content">
            <h1>Alert</h1>
            <p><a href="#" onclick="showAlert(); return false;" data-role="button">Show alert</a></p>
        </div>
    </div>
</body>
</html>

我尝试了多种解决方案来解决我的问题,但它们都不起作用。当在href中有带有#的按钮时,它不会在点击时改变颜色。当我添加网址时,它会改变颜色。但它从不调用javascript函数。另一个问题是,document.addEventListener("deviceready", onDeviceReady, false);这只适用于索引页面。如果我在重定向到另一个页面的初始页面中按下按钮,则永远不会调用 OnDeviceReady 函数。
有人有什么想法吗?

4

5 回答 5

2

onDeviceReady()只调用一次(当设备(即 Cordova)准备好时)。$(document).on('pageinit', '#pageid', function() { });每次导航到页面时,您都希望触发一些东西。

于 2012-10-08T19:25:41.977 回答
2

在body标签中你需要添加标签,javascript中的onBodyLoad()函数应该是这样的:

   function onBodyLoad()
    {       
      document.addEventListener("deviceready", onDeviceReady, false);
    }
于 2012-10-22T10:28:03.460 回答
1

我是一个完全没有电话间隙和查询手机的菜鸟,所以我犯了一个愚蠢的错误。问题是,当我单击按钮时,它不会加载整个页面,而只是加载正文部分。这意味着,它只使用第一页中的 javascript。那是我的问题。现在我已将所有 javascript 放入单独的文件(两个文件的所有 javascript)并且它可以工作。

于 2012-10-10T16:50:22.237 回答
0

使用 jQuery 尝试以下操作:

<!DOCTYPE html>
<html>
<head>
    <title>Title</title>
    <meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="js/jquery.mobile-1.2.0.css" />
    <script type="text/javascript" charset="utf-8" src="cordova-1.8.1.js"></script>
    <script type="text/javascript" charset="utf-8" src="js/jquery-1.8.2.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.2.0.min.js"></script>
    <script type="text/javascript">
        document.addEventListener("deviceready", onDeviceReady, false);

        function onDeviceReady() {
        }

        function showAlert() {
            navigator.notification.alert("Cordova is working");
        }

        $(function() {
            $("#my_link").click(function() {
                showAlert();
            });
        });

    </script>
</head>
<body>
    <div data-role="page" id="options" data-add-back-btn="true" data-back-btn-text="Atgal">
        <div data-role="header" data-position="fixed">
            <h1>Title</h1>
        </div>
        <div data-role="content">
            <h1>Alert</h1>
            <p><a id="my_link" href="#" data-role="button">Show alert</a></p>
        </div>
    </div>
</body>
</html>

希望这可以帮助。让我知道你的结果。

于 2012-10-09T03:36:02.777 回答
0

即使我为 md 按钮设置了更高的 z-index,它仍然不会点击 iOS。它在 Android 上运行良好。在我的情况下,我必须设置一个父容器<md-subheader>to z-index: -1; 然后它起作用了。

于 2015-07-30T16:06:45.457 回答