错误地链接 Javascript 文件?
Posted
技术标签:
【中文标题】错误地链接 Javascript 文件?【英文标题】:Incorrectly Linking Javascript File? 【发布时间】:2012-02-21 19:26:06 【问题描述】:我正在努力在 iPhone 上安装 PhoneGap 插件。我尝试安装的插件页面可以在这里看到:https://github.com/phonegap/phonegap-plugins/tree/master/iPhone/MessageBox。
我相信我已将问题范围缩小到错误地使用 javascript 文件。我将它包含在我的 html 页面中,如下所示:
<script language="javascript" type="text/javascript" src="MessageBox.js"></script>
我的 HTML 页面的其余部分是这样的:
<script type="text/javascript">
alert("test1");
var messageBox = window.plugins.messageBox;
alert("test2");
messageBox.alert('Title', 'Message', function(button) console.warn('alert', [this, arguments]); );
</script>
我看到一条警告说 test1,但没有看到第二条警告。这让我觉得报错就行了:
var messageBox = window.plugins.messageBox;
但是,我不太确定我应该做些什么不同的事情。据我所知,我已经完成了插件文档页面中描述的所有必要步骤,如下所示: https://github.com/phonegap/phonegap-plugins/blob/master/iPhone/MessageBox/README.md
(正如预期的那样,通过 ios 模拟器查看时,我也没有看到 messageBox.alert... 行的输出。)
感谢您对此问题的任何帮助,谢谢!
注意:我关于这个主题的最初帖子可以在这里看到:Trouble Installing PhoneGap Plugin
编辑:我还应该补充一点,在尝试安装不同(但相似)的插件时,我遇到了完全相同的问题,称为“提示”
EDIT2:这是我的 index.html:
<script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
<script type="text/javascript" src="MessageBox.js"></script>
<script type="text/javascript">
function onBodyLoad()
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady()
navigator.notification.alert("PhoneGap is working");
window.location.href="otherpage.html";
</script>
【问题讨论】:
【参考方案1】:问题是当您尝试创建 MessageBox 时,PhoneGap 还没有准备好。
您只需要等待 PhoneGap 准备就绪,然后再执行您的代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady()
window.location="otherpage.html";
</script>
</head>
<body>
</body>
</html>
然后,在 otherpage.html 上:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
<script type="text/javascript" charset="utf-8" src="MessageBox.js"></script>
</head>
<body onload="onLoad()">
<script type="text/javascript" charset="utf-8">
function onLoad()
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is loaded and it is now safe to make calls PhoneGap methods
//
function onDeviceReady()
console.log("onLoad");
var messageBox = window.plugins.messageBox;
messageBox.alert('Title', 'Message', function(button) console.warn('alert', [this, arguments]); );
</script>
</body>
</html>
我在 PhoneGap 1.4.1 上测试过
【讨论】:
感谢您的回复。当我将此代码放在 PhoneGap 创建的 index.html 文件上时,这确实有效。目前,在我的索引文件中,我使用 Javascript 重定向到另一个页面,即我的 index.html 代码中有这个:window.location.href="otherpage.html"
有没有办法我也可以在那个页面上使用这个 MessageBox 插件?当我尝试您在该页面(otherpage.html)上发布的代码时,似乎没有调用 onDeviceReady() 。也许它不能被称为第二次?有什么解决方法吗?再次感谢您的帮助,非常感谢!
感谢您的回复。但是由于某种原因,当我单击警报按钮时,MessageBox 不显示。有没有办法解决这个问题,或者根本不显示按钮来显示它? (例如,通过在页面加载时正确显示?)再次感谢!
你又在用什么版本的Phonegap?
我使用的是PhoneGap 1.3.0版。
你把你的压缩项目发给我怎么样?我会看看有什么问题。以上是关于错误地链接 Javascript 文件?的主要内容,如果未能解决你的问题,请参考以下文章
Java 脚本 - 当尝试按顺序一个接一个地播放音频时(通过 for 循环),一次播放所有音频