我正在制作一个演示,该演示通过触摸事件模拟移动设备,因此可以在桌面浏览器的触摸事件上进行捏缩放或滚动事件。到目前为止,我已经可以在 Chrome、IE 和 Firefox 中运行了。
最终要求是相同的代码也必须从 SAP
CL_GUI_HTML_VIEWER
类内部运行。这个类至少在Windows上运行时基本上被识别为IE。
我的问题是,无论出于何种原因,
CL_GUI_HTML_VIEWER
不支持实际的浏览器事件,如pointerdown
或pointermove
,就像它们在IE中一样
所以我希望能够尝试识别页面是在 IE 还是 SAP 中呈现。然而,由于 SAP 使用 IE,我的 javascript 总是说它是 IE。
有什么具体方法可以识别差异吗?
只是为了澄清网页是如何加载到 SAP GUI 中的。我为我的
show_url( url = myurl in_place = 'X' ).
实例调用方法 CL_GUI_HTML_VIEWER
。所以我的ABAP基本上是这样的:
data: g_html_view type ref to CL_GUI_HTML_VIEWER,
g_custom_container type ref to CL_GUI_DOCKING_CONTAINER,
edurl(1024) value 'http://localhost:8080/MyPage.html'.
if g_custom_container is initial.
create object g_custom_container
exporting
extension = 3000.
endif.
if g_html_view is initial.
create object g_html_view
exporting
parent = g_custom_container.
endif.
call method g_html_view->show_url( url = edurl in_place = 'X' ).
您可以尝试以下任一方法:
>>> window.is_sap_gui
true
>>> window.sapHtmlControl
"TRUE"
>>> window.location.protocol
"sapr3:"
我们使用第一个选项,但该选项可能是我们在框架中明确定义的选项。第二个是 SAP 可能正在设置的一个。
如果其中任何一个都失败,最好的方法是检查协议。这将是一个致命的赠品。
这个方法对我有用:
window.sapHtmlControl