CSS-based system-wide solution
This doesn't require any JavaScript or Ajax frames or any other wrapper. It was tested on Internet Explorer, Firefox, Safari and Chrome.
This can be fixed at the Style Sheet level in Report Server.
First, navigate to the directory where reporting services is installed, in my case (SQL Server 2012 SP1) it is:
C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer
In that directory, you will find a file named reportserver.config.
See Customize Style Sheets for HTML Viewer and Report Manager.
In that file insert a single XML line like (from the above document):
<Configuration>
...
<HTMLViewerStyleSheet>SafariChromeFix</HTMLViewerStyleSheet>
...
</Configuration>
Save that.
What they don't tell you in the above link is that this entry overrides the default style sheet completely. My first attempts to get the reports to render worked by adding a div stylesheet, everything else was broken. Once I figured out that this edit to the reporserver.config file didn’t augment, but actually replaces the default style sheet, I copied in the default style sheet and everything started working.
Next, descend into the Styles directory (C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer\Styles
).
Make a copy the file named SP_Full.css and name the copy SafariChromeFix.css. At this point, SafariChromeFix.css should be identical to SP_Full.css.
Edit SafariChromeFix.css and add the following lines to the top:
div {
overflow: visible !important;
}
Save it.
Once this is saved, all of the existing reports on this instance of Reporting Services will render on all browsers including Chrome and Safari.
Please Note:
It’s not only possible, but extremely likely that reportserver.config will be overwritten with updates to reporting services, so you may have to add the <HTMLViewerStyleSheet>SafariChrome</HTMLViewerStyleSheet>
tag into it over time.
This also gives us a place to break into the default style sheet and make a lot of other custom changes starting from something that is already working. And since it's not the default stylesheet, your new custom CSS file doesn't get overwritten during upgrades and patches.