Javascript 将CSS应用于iFrame(或其他元素)之外的项

Javascript 将CSS应用于iFrame(或其他元素)之外的项,javascript,html,css,iframe,sharepoint,Javascript,Html,Css,Iframe,Sharepoint,我正试图在SharePoint网页的主体中插入一些css作为背景图像。js基本上是这样的: document.getElementsByTagName( "Body" )[ 0 ].style.backgroundImage = <My Image URL> document.getElementsByTagName( "Body" )[ 0 ].style.backgroundSize = "50%" document.getElementsByTagName( "Body" )[

我正试图在SharePoint网页的主体中插入一些css作为背景图像。js基本上是这样的:

document.getElementsByTagName( "Body" )[ 0 ].style.backgroundImage = <My Image URL>
document.getElementsByTagName( "Body" )[ 0 ].style.backgroundSize = "50%"
document.getElementsByTagName( "Body" )[ 0 ].style.backgroundPosition = "50% 50%"

它和我预期的一样,除非中间有一个iFrAMP或者任何其他的“身体”标签。然后图像被放入iFrame以及我的页面主体中。这些iFrame本质上是当你需要上传文档、更改网站上的一些设置等时弹出的弹出窗口。它们不会一直打开,但无论如何,我不希望图像出现在那里

当我调用document.getElementsByTagName'Body'时,我总是得到iFrame当前运行的任何内容的Body标记,否则我将得到文档的主体。但它始终是一个包含1项的HtmlCollection数组。如果使用document.body,也会发生同样的情况

所有主体标记都具有相同的通用设置,无论它们是站点的实际主体标记还是iFrame的主体


Javascript有没有一种方法可以说应用于主体,但不适用于任何其他主体?

您的描述与文档相矛盾,请参见。你真的确定它的行为和你描述的一样吗?你所描述的行为是我作为一名开发人员从未经历过的。
您是否可以再次检查并更新此问题?

首先,调用getElementsByTagName时获得HtmlCollection的原因是,该函数返回数组,而不管它是否匹配零,一个或多个项都会观察元素中的复数s

不同的JSWebAPI get函数在这方面是非常自解释的 getElementById no复数s返回单个DOM节点,而getElementsBy[Name | ClassName | TagName]都返回一个节点数组

现在谈谈你的主要问题: 我认为iFrames是指模态对话? SharePoint中的模式对话框有一个共同点,即它们都有url参数&IsDlg=1。这意味着您可以检查是否在对话框中,并让代码相应地执行操作

下面是您正在寻找的代码,它将把您的样式应用于所有非模式页面

//可以使用GetUrlKeyValueIsDlg==1, //但不确定是否加载了sp.js,因此这样更安全 var isDialog=document.location.search.indexOfIsDlg=1>-1; //对于非对话框页面 如果isDialog{ var docBody=document.body; //如果出于某种疯狂的原因document.body返回数组?? ifdocument.body.length{docBody=document.body[0]} //造型 docBody.style.backgroundImage=[您的图像URL]; docBody.style.backgroundSize=50%; docBody.style.backgroundPosition=50%50%; } 备注:在更新的>2007版本的SharePoint中,不建议自定义母版页。
还有其他几种方法,例如在不接触开箱即用母版页的情况下自定义平台,如果您想专业地使用sharepoint,您应该熟悉这些方法。

要进行我尝试进行的更改,我只需要通过Site Settings->Look and Feel向页面的外观添加一个图像。快速简单,不需要任何代码。。。谢天谢地。

很抱歉,我刚刚意识到我应该把这个放到SharePoint.StackExchange上,因为那里的用户了解环境的机制。但是我把JS放在网站的母版中,这样它就可以覆盖整个子网站。但是,我相信弹出窗口可能对其iFrame使用相同的模板。但是,是的,这是目前正在发生的功能。嗨!谢谢你的更新。我对SharePoint很陌生。。。但我发现了如何以更受支持的方式解决我的问题。我会发布我的答案,但这是为了在外观和感觉上添加一个图像,这只是在背景上添加一个图像。我不知道这个功能存在。不过我会记住isDialog功能!!非常感谢。