首页 > 解决方案 > 使用客户端脚本控制 SAPUI5 应用程序

问题描述

所以,我们有一个现有的应用程序,如果我没记错的话,我认为它是基于 sapui5 构建的。它几乎是一个简单的搜索功能应用程序。我查看了 DOM 并注意到搜索框表单的 ID 为#__xmlview0--searchField-F,包括 all 的搜索框容器位于 under #__xmlview0--searchField,实际的文本输入区域位于 under #__xmlview0--searchField-I。本质上,它看起来像这样 - 高度简化:

<div id = "__xmlview0--searchField">
    <form id = "__xmlview0--searchField-F">
        <input type = "search" id = "__xmlview0--searchField-I" />
        <div id = "__xmlview0--searchField-search"></div>
    </form>
</div>

我感兴趣的页面有两个,一个是搜索的原始起始页面,另一个是显示结果的搜索页面,其中也包含相同的搜索框,以便用户可以快速执行另一个搜索。让我们称之为start pageresults page

由于该应用程序似乎没有对搜索字符串使用任何 QS,我想创建一个嵌套页面,我可以在其中简单地将搜索元素传递到应用程序生成的页面中,并一键显示搜索结果,而不是用户需要手动完成并将事情从一个地方转录到搜索功能。

我最初尝试简单地更改搜索框的值,然后提交搜索:

$("#__xmlview0--searchField-I").val("SOMETHING");
$("#__xmlview0--searchField-F").submit();

这种方法没有奏效。似乎提交将针对 执行start page,但不会针对results page. 但是,即使在执行提交的起始页面上,“SOMETHING”的搜索文本也肯定会以某种方式丢失。所以我尝试手动输入文本,只做:

$("#__xmlview0--searchField-F").submit();

这似乎表明提交按钮有效(也仅用于start page,而不用于results page),尽管即使我在开始页面中执行时手动输入了文本,“SOMETHING”似乎仍然以某种方式丢失。认为以编程方式单击提交机制可能有问题,我尝试只做:

$("#__xmlview0--searchField-I").val("SOMETHING");

然后手动单击搜索执行图标(也尝试按“输入”)。但令我沮丧的是,尽管 DOM 正确显示了输入搜索字段的更改,但搜索并未执行,尽管按钮闪烁,所以我确信我至少正确地单击了它。

所以我想,也许我需要在开始更改搜索字段之前触发某种事件,以提示在幕后正确执行事件,以便在更改时正确识别输入文本:

$("#__xmlview0--searchField-I").focus();
$("#__xmlview0--searchField-I").val("SOMETHING");
$("#__xmlview0--searchField-I").focus();
$("#__xmlview0--searchField-F").submit();

但这也不起作用。我正在拉扯我的头发,试图弄清楚可能发生了什么。知道 SAPUI5 东西的人可以给我一些见解吗?我是否正在做一些在这种环境下根本不可能的事情?

标签: javascriptsapui5

解决方案


推荐阅读