javascript - 使用客户端脚本控制 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 page
和results 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 东西的人可以给我一些见解吗?我是否正在做一些在这种环境下根本不可能的事情?
解决方案
推荐阅读
- google-sheets - Using a ArrayFormula or Query to replace dragging down SumIf between dates
- python - QMovie 不显示 Gif
- laravel - Laravel 6 迁移问题:外键约束形成错误
- python - 如何在 Anaconda Windows 10 中安装 wget?
- python - 如果在日落后调用 Pyephem 在错误的日子给出 next_sunset
- azure - 是否可以与其他用户共享计算实例?
- javascript - 页面刷新后保存多个复选框的单个状态
- speech-recognition - Kaldi:迁移学习
- react-native - 结合 BottomTabNavigator 和 StackNavigator [React Navigation v5 / Android]
- spring - 形式 th:action 不能使用 thymeleaf 和 spring