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

标签 javascript browser abap

我正在制作一个演示,该演示通过触摸事件模拟移动设备,因此可以在桌面浏览器的触摸事件上进行捏缩放或滚动事件。到目前为止,我已经可以在 Chrome、IE 和 Firefox 中使用它了。

最终要求是相同的代码也必须从 SAP CL_GUI_HTML_VIEWER 内部运行。类(class)。这个类至少在Windows上运行时基本上被识别为IE。

我的问题是,无论出于何种原因 CL_GUI_HTML_VIEWER不支持实际的浏览器事件,如 pointerdownpointermove就像他们在 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 可能正在设置的一个。

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

关于javascript - 如何确定我的页面是在普通浏览器还是 SAP CL_GUI_HTML_VIEWER 中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43474536/

相关文章:

JavaScript 触发器不起作用

javascript - 将 javascript 显示为代码片段

cakephp - 在 cakephp View flie (.ctp) 上更改,但在浏览器中没有更改

javascript - Firefox 中的 console.dir(window)?

abap - 进入! OBLIGATORY 参数中的(感叹号)不能用作输入。为什么?

dictionary - ABAP 中的字典。如何?

javascript - 通过比较另外两个 json 对象来创建一个 json 对象

javascript - 一次迭代一个网格行

eclipse - Eclipse:选择“在服务器上运行”不会启动Firefox,它会启动Eclipse的内部浏览器

abap - 使用 SOOD 表获取发件人电子邮件