由于关闭行为和指定的URL,Sharepoint 2010 + CSS3Pie无法正常工作

Jan*_*n_V 5 css behavior sharepoint-2010

我正在为一个新的Sharepoint 2010面向公众的网站打造品牌.在这个网站上,我想在几个容器周围使用阴影和圆角.我自己第一次尝试这样做,但是我的一位同事告诉我关于CSS3Pie(http://css3pie.com),它非常好用.

我遇到的问题是指定HTC文件的路径.目前我有这个:

#left_content_small
{
    width: 610px;
    padding: 20px;
    border: 1px solid #999;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    behavior: url(/PIE.htc);
}
Run Code Online (Sandbox Code Playgroud)

这在IE中无法正常工作.另外,使用

    behavior: url(Style Library/StyleSheets/PIE.htc);
Run Code Online (Sandbox Code Playgroud)

也没有工作.此外,在字符串周围放置"或"不起作用.但是,指定行为URL如下:

behavior: url(_layouts/PIE.htc);
Run Code Online (Sandbox Code Playgroud)

确实有效.现在可以正确呈现所有容器.

我可以将htc文件放在layouts文件夹中,但我不喜欢它,因为它会破坏自定义文件的默认Sharepoint文件夹.

我已经用Fiddler检查了页面加载,我看到PIE.htc文件在所有情况下都返回了200个代码(这很好).如果我将它放在网站的布局,样式库或根目录中,每次返回200时都无关紧要.

CSS3Pie存在一些已知问题:http://css3pie.com/documentation/known-issues/ 其中说明了相对url等等.我以为我已经通过在网址前放置/ -character来钉它了.还尝试了完整的域url(http://testsite.local/PIE.htc),但这也无法正常工作.

有关如何将htc文件放置在Sharepoint 2010站点中而不是布局文件夹中的任何想法?

小智 7

使用.htc文件和SharePoint 2010(以及IE7之后的任何IE版本)时,您必须处于"允许文件"模式或将"text/x-component"MIME类型添加到AllowedInlineDownloadedMimeTypes使用PIE的每个Web应用程序的列表中.

允许模式是最容易在Web应用程序上设置的,但如果您允许用户上传内容,还会为您提供潜在的利用.(这与SharePoint 2010中默认情况下不在浏览器中打开的原因相同)

如果不允许这种MIME类型,则IE将下载.htc,但它将拒绝执行文件中包含的任何行为(该文件随"X-Download-Options:noopen"标头一起发送).

通过PowerShell将mime类型添加到webapp相对简单.

$webapp = Get-SPWebApplication <name or URL of web app>
$webapp.AllowedInlineDownloadedMimeTypes.Add("text/x-component")
$webapp.Update()
Run Code Online (Sandbox Code Playgroud)

这是一个per-webapp设置,因此您需要对将使用PIE的每个webapp进行更改.

进行此更改还可以将PIE.htc存储在文档库中.

- 罗伯特·