【问题标题】:rhomobile javascript not workingrhomobile javascript不工作
【发布时间】:2023-04-03 11:33:02
【问题描述】:

我在我的 rhomobile 应用中有一个视图,我想在其中隐藏和显示某些 div, 使用 jQuery 和 Javascript。 Javascript 代码嵌入在视图文件中,但是 没有被执行。例如,这段代码在我的应用程序中没有做任何事情:

<script type="text/javascript">
$(document).ready(function () {
alert("loaded submit.erb...");
showLoadingIndicator();});
</script>

我正在使用新生成的应用项目附带的标准 layout.erb。 非常感谢任何帮助。

HTML 输出:

<script type="text/javascript">
$(document).ready(function () {
alert("loaded submit.erb...");
showLoadingIndicator();});

function showLoadingIndicator(){
    setTimeout(function(){
            $('#loadingPlaceholder').hide();
            <% if @params["body"] == "SUCCESS" %>
            successfull();
            <% elsif @params["body"] == "FAILED" %>
            <%= puts "### FAILED ###" %>
            not_successfull();
            <% else %>
                wait();
            <% end %>
        },6000);
}
function successfull(){
  $('#successfull').show();
}

function not_successfull(){
  $('#not_successfull').show();
}

function wait(){
    <%= puts "+++ body => +++" %>
    <%= puts  @params %>
    <%= puts "++++++++++++++++++" %>
}</script>
<div data-role="page">
    <div id="loadingPlaceholder" style="width: 100%; height: 250px; text-align: center;  position: absolute; display: block">
            <div>
                Ihre Anfrage wird gesendet...
            </div>
    </div>  

    <div id="successfull" style="width: 100%; height: 250px; text-align: left;  position: absolute; display: none">

        Ihre Anfrage wurde gesendet.<br>
        Wir setzen uns umgehend mit Ihnen in Verbindung.
    </div>

    <div id="not_successfull"  style="width: 100%; height: 250px; text-align: left;  position: absolute; display: none;">
        Leider konnte Ihre Anfrage nicht versendet werden.<br><br>
        Bitte versuchen Sie es später noch einmal.<br> 

    </div>
</div>

【问题讨论】:

  • 页面的HTML输出(“查看源代码”)是什么?

标签: javascript rhomobile rhodes


【解决方案1】:

很可能是一个 js 错误导致脚本的其余部分无法加载。
我们需要知道的另外几件事是:

  1. 您使用的是什么 UI 框架? (jquery mobile、jqui 等)

  2. 这是否发生在 rhodes 模拟器、设备、模拟器中?

要弄清楚发生了什么:

  1. 检查 rhosimulator 中的控制台日志和 rhodes 日志,查找其中的任何错误。
  2. 将警报附加到布局页面中的 window.onerror 事件并 看看有没有出现。
  3. 脚本中的所有内容都不太可能失败(这将指向 到 UI 框架问题),尝试添加一些警报或控制台日志 到页面中脚本的顶部,或者更好地使用 log4js 和 开始添加您可以管理的调试代码。

【讨论】:

  • 嗨劳尔,感谢您的提示。同时我有点让它工作。我将 Javascript 代码放在一个额外的文件“request.js”中,并将其包含在 layout.erb 中。这样代码正在执行。但是当我在 request.erb 文件中插入一个脚本块时,它仍然不起作用。我正在使用 jquery mobile,我正在 android 模拟器和 chrome webbrowser 中进行测试。
  • 你有没有试过在Chrome中打开控制台,看看你把脚本放到视图文件里有没有js报错?
  • 是的,我试过了。我在视图文件的脚本块中放置了一个警报和一个函数“doAlert()”。我尝试使用 onClick() 函数调用该函数。通过这样做,控制台会显示:“未捕获的 ReferenceError:doAlert 未定义”。看起来好像视图文件根本不知道这个功能......
  • 你在哪里定义 doAlert 函数?听起来确实像是视图中某处的 js 错误...考虑到视图中的 js 由您用于转换的任何框架加载并在加载页面时动态运行,您需要确保该过程是进展顺利(不会在脚本中抛出任何解释错误)
  • 我在视图文件的最顶部定义了 Javascript。与此同时,我尝试了一些新的东西,并且 Javascript 代码现在正在运行。我的视图基本上由三个具有不同数据角色的 div 组成。 data-role="page"、data-role="header" 和 data-role="content"。现在我在 data-role="page" div 中有脚本块,正在执行代码。我认为这是一个 jQueryMobile 特定的东西......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2015-11-15
  • 2013-06-21
  • 1970-01-01
相关资源
最近更新 更多