【问题标题】:Cannot Load from URL in Kendo Panel Bar tab无法从 Kendo 面板栏选项卡中的 URL 加载
【发布时间】:2017-04-23 10:25:54
【问题描述】:

我需要从 URL 加载新选项卡的内容,但无法正常工作

我需要与 HTML 5 之前的 IFrame 相同的东西

我要访问的网站没有任何指向托管网站的链接

我先尝试了一个简单的版本

  @(Html.Kendo().PanelBar()
                  .Items(panelbar =>
                  {
                      panelbar.Add().Text("Test").LoadContentFrom(@"<object data='https://www.google.com' type='text/html'/>");                    
                  })
                  )

有人能做到吗?

如您所见,我正在使用 MVC 包装器

保罗

【问题讨论】:

    标签: kendo-ui telerik-mvc kendo-panelbar


    【解决方案1】:

    首先,您需要为面板栏指定一个名称,否则它将不起作用。关于LoadContentFrom,您只需为其提供一个网址即可。包含这个 html 标记是没有意义的。所以你的代码需要看起来像这样:

    @(Html.Kendo().PanelBar()
                      .Name("Test")
                      .Items(panelbar =>
                      {
                          panelbar.Add().Text("Test").LoadContentFrom(@"https://www.google.com/");
                      })
    )
    

    但是,这仍然行不通,因为对 google.com(或任何其他没有正确 access-control-allow-origin 标头的 https 站点)的请求将被 CORS 阻止。

    所以这种情况可能会也可能不会,这取决于您要从中加载的外部站点。

    此外,如果您没有 CORS 问题并且能够加载内容,那么这仍然不会像 iframe 那样工作,因为您只会收到 HTML,其中可能包含损坏的图像并且没有 CSS。那是因为您将把这个 html 放在一个文档中,该文档无权访问这些资源,除非它们被域名引用。您将不得不搜索您收到的整个 html 并替换任何图像、css 和 javascript 引用...这可能仍然无法提供与 iframe 相同的体验。

    【讨论】:

    • 这取决于您到底要做什么以及使用哪个站点。将外部站点嵌入到您自己的站点中并不是您可以像过去那样轻松做到的事情。这被认为是一种安全风险,现代浏览器在大多数情况下都不允许这样做。您应该查看您要使用的网站是否提供用于嵌入的官方小部件(如 youtube 的嵌入代码),或者它们是否提供 API,您可以使用该 API 与该网站进行交互。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2018-04-28
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多