如何确定我的页面是在普通浏览器还是 SAP CL_GUI_HTML_VIEWER 中呈现

问题描述 投票:0回答:2

我正在制作一个演示,该演示通过触摸事件模拟移动设备,因此可以在桌面浏览器的触摸事件上进行捏缩放或滚动事件。到目前为止,我已经可以在 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' ).
javascript browser abap
2个回答
0
投票

您可以尝试以下任一方法:

>>> window.is_sap_gui
true

>>> window.sapHtmlControl
"TRUE"

>>> window.location.protocol
"sapr3:"

我们使用第一个选项,但该选项可能是我们在框架中明确定义的选项。第二个是 SAP 可能正在设置的一个。

如果其中任何一个都失败,最好的方法是检查协议。这将是一个致命的赠品。


0
投票

这个方法对我有用:

window.sapHtmlControl
  • 如果文档嵌入 SAP GUI 中 Dynpro 上的 CL_GUI_HTML_VIEWER 中,则为“TRUE”
  • 如果文档位于 Egde/chrome 中,则显示“未定义”
© www.soinside.com 2019 - 2024. All rights reserved.