如果 JavaScript 在单独的文件中,Cordova 应用程序将无法运行
Cordova application doesn't work if JavaScript is in separate file
我希望在单击按钮时显示警报 window。
我试图在浏览器中 运行 它。
我也尝试在没有 jQuery 的情况下这样做 - 同样的问题。
在我的 HTML 上只有一个按钮:
<html>
<head>
<title>Device Ready Example</title>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script src="js/index.js"></script>
<button id="btn">BUTTON</button>
</head>
<body>
</body>
</html>
这是我的 JavaScript 文件(Chrome 的控制台中没有错误消息):
function App() {
var initialize = function () {
onload();
}
onLoad = function () {
document.addEventListener('deviceready', function () {
$("#btn").click(
function () {
alert("ALERT");
}
);
}, false);
}
onDeviceReady = function () {
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
document.addEventListener("btn", onMenuKeyDown, false);
}
onPause = function () {
}
onResume = function () {
}
onMenukeyDown = function () {
$("#btn").click(
function () {
alert("ALERT");
}
);
}
};
var app = new App;
问题出在您的 index.js 语法上。如果你有一个 JavaScript 对象,你需要像这样实例化:
function App() {
var initialize = function () {
onload();
}
onLoad = function () {
document.addEventListener("deviceready", onDeviceReady, false);
}
onDeviceReady = function () {
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
document.addEventListener("btn", onMenuKeyDown, false);
}
onPause = function () {
}
onResume = function () {
}
onMenukeyDown = function () {
$("#btn").click(
function () {
alert("ALERT");
}
);
}
};
var app = new App;
仅当您 运行 您的应用程序在移动设备上或者您可以添加浏览器 cordova 平台以使用这种方式时,deviceready 事件监听器才会起作用。
但是您的问题的答案是,只需使用 jquery。 index.html:
<html>
<head>
<title>Device Ready Example</title>
<button id="btn">BUTTON</button>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
document.addEventListener('deviceready', function () {
$("#btn").click(
function () {
alert("ALERT");
}
);
}, false);
</script>
</head>
<body>
</body>
</html>
您需要了解 PhoneGap 应用程序的工作原理。它们不是网站,因此它们的行为与您在浏览器中 运行 它们不同。 PhoneGap 应用程序 运行 在 webview 中沙盒化,它与 web 浏览器共享许多功能,但有重要的区别。一个重要的区别是安全性,这会导致您遇到问题。
您正在 link 直接从 Web jQuery 图书馆。当您 运行 您 phone 上的应用程序时,网络视图将阻止该文件,因为出于安全原因,它会阻止访问任何外部网站。所以你得到的应用没有 jQuery.
您必须将 jQuery 文件下载到本地文件夹并相应地更改 link。
与您的问题无关,我还建议先加载 cordova.js(在 jQuery 或任何其他脚本之前)。
我希望在单击按钮时显示警报 window。 我试图在浏览器中 运行 它。 我也尝试在没有 jQuery 的情况下这样做 - 同样的问题。 在我的 HTML 上只有一个按钮:
<html>
<head>
<title>Device Ready Example</title>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script src="js/index.js"></script>
<button id="btn">BUTTON</button>
</head>
<body>
</body>
</html>
这是我的 JavaScript 文件(Chrome 的控制台中没有错误消息):
function App() {
var initialize = function () {
onload();
}
onLoad = function () {
document.addEventListener('deviceready', function () {
$("#btn").click(
function () {
alert("ALERT");
}
);
}, false);
}
onDeviceReady = function () {
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
document.addEventListener("btn", onMenuKeyDown, false);
}
onPause = function () {
}
onResume = function () {
}
onMenukeyDown = function () {
$("#btn").click(
function () {
alert("ALERT");
}
);
}
};
var app = new App;
问题出在您的 index.js 语法上。如果你有一个 JavaScript 对象,你需要像这样实例化:
function App() {
var initialize = function () {
onload();
}
onLoad = function () {
document.addEventListener("deviceready", onDeviceReady, false);
}
onDeviceReady = function () {
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
document.addEventListener("btn", onMenuKeyDown, false);
}
onPause = function () {
}
onResume = function () {
}
onMenukeyDown = function () {
$("#btn").click(
function () {
alert("ALERT");
}
);
}
};
var app = new App;
仅当您 运行 您的应用程序在移动设备上或者您可以添加浏览器 cordova 平台以使用这种方式时,deviceready 事件监听器才会起作用。
但是您的问题的答案是,只需使用 jquery。 index.html:
<html>
<head>
<title>Device Ready Example</title>
<button id="btn">BUTTON</button>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
document.addEventListener('deviceready', function () {
$("#btn").click(
function () {
alert("ALERT");
}
);
}, false);
</script>
</head>
<body>
</body>
</html>
您需要了解 PhoneGap 应用程序的工作原理。它们不是网站,因此它们的行为与您在浏览器中 运行 它们不同。 PhoneGap 应用程序 运行 在 webview 中沙盒化,它与 web 浏览器共享许多功能,但有重要的区别。一个重要的区别是安全性,这会导致您遇到问题。
您正在 link 直接从 Web jQuery 图书馆。当您 运行 您 phone 上的应用程序时,网络视图将阻止该文件,因为出于安全原因,它会阻止访问任何外部网站。所以你得到的应用没有 jQuery.
您必须将 jQuery 文件下载到本地文件夹并相应地更改 link。
与您的问题无关,我还建议先加载 cordova.js(在 jQuery 或任何其他脚本之前)。