【问题标题】:Sharepoint Online Can't Hide iFrame ribbonSharepoint Online 无法隐藏 iFrame 功能区
【发布时间】:2023-03-04 04:27:01
【问题描述】:

我正在尝试在 sharepint 中隐藏 iframe 0365 功能区,但它只是返回这个...

TypeError: document.getElementById(...) is null

这是我正在测试的代码,我最终会使用 display:none...

document.getElementById('.content-frame').contentDocument.body.getElementById('#suiteBarDelta').style.visibility = 'hidden';

有没有更好的方法来做到这一点?

【问题讨论】:

  • 也许“.content-frame”不是一个id,而是一个类的querySelector。此外,除非您的脚本托管在与 sharepoint 相同的域中,否则您将无法访问 iframe 的 DOM。
  • @James 啊,这是一个愚蠢的错误。所以我改变了它,但现在它告诉我 contentDocument 未定义,这是代码...document.getElementsByClassName('content-frame').contentDocument.body.getElementById('#suiteBarDelta').style.visibility = 'hidden'; 这是错误...TypeError: document.getElementsByClassName(...).contentDocument is undefined,两个页面都托管在同一个团队网站上跨度>
  • getElementsByClassName 返回一个元素集合,因此您需要在尝试访问 contentDocument 属性之前选择一个元素,例如document.getElementsByClassName("content-frame")[0].contentDocument...
  • @James 我试了一下,但现在它告诉我这不是一个函数...TypeError: document.getElementsByClassName(...)[0].contentDocument.body.getElementById is not a function,这是代码document.getElementsByClassName('content-frame')[0].contentDocument.body.getElementById('#suiteBarDelta').style.visibility = 'hidden';
  • ...contentDocument.getElementById,不是...contentDocument.body.getElementById

标签: javascript iframe sharepoint office365 sharepoint-online


【解决方案1】:

假设您将此脚本直接添加到包含“父”窗口代码(即,它具有 iframe)的 html 文件中。确保在执行此代码时定义了 iframe(因此,将脚本块放在 iframe 元素之后,或者使用 window.onload 或 document.ready 处理程序)

<iframe class='content-frame'></iframe>

...

<script>
document.getElementsByClassName("content-frame")[0].addEventListener("load", function () {
  // the document in the iframe has loaded.  let's hide that ribbon bar
  var ribbonBar = this.contentDocument.getElementById("suiteBarDelta");
  if (ribbonBar) {
    ribbonBar.style.visibility = 'hidden';
  } else {
    console.log("uh oh, ribbonBar still does not exist");
  }    
});
</script>

我真的不知道 Sharepoint 是否做了很多恶作剧来构建 iframe 中的内容(例如,调用异步请求来获取功能区栏)——但这肯定会破坏这段代码(你会得到呃哦,控制台中的消息)。

【讨论】:

  • 是的!这做到了!虽然,现在它在加载条时加载它然后它尴尬地消失了,你知道如何解决这个问题吗?
  • 不完全是,父级和 iframe 之间没有太多可以像负载处理程序一样被捕获的交互。在加载并移除功能区之前隐藏整个 iframe 怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-02
  • 2019-04-22
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多