错误地链接 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 循环),一次播放所有音频

HTML 与 Javascript 链接有问题

java有效地获取文件大小

java有效地获取文件大小

Javascript Canvas迭代地将图像自动保存到文件夹

链接并执行托管在 GitHub 上的外部 JavaScript 文件