Safari and links to elements in overflow:auto content
I’m working on a project right now that has some content in div tags with their overflow property set to auto. Then, on another part of the page, there are links that point to elements (using their IDs) inside the overflowed div tags (See example). This all works just fine in IE6 and Firefox/Mozilla, but Safari wasn’t behaving. You can click the links all day long, but Safari won’t scroll the selected anchor into view.
Well, after a few hours of tyring different ways to hack Safari into submission, I decided that the only way I could get it working was to use some Javascript, so I thought I should share the code since there were a few pages on Google also looking for solutions.
Here is what the Javascript looks like:
var targBox = "box";
function init() {
if (document.getElementById) {
var atags = document.getElementsByTagName("A");
for (var i=0;i<atags.length;i++) {
var ca = atags[i];
if (ca.href.indexOf("#") > -1) {
ca.onclick = function() {
scrollDivToAnchor(this.href.split("#")[1]);
}
}
}
}
}
function scrollDivToAnchor(a) {
var b = document.getElementById(targBox);
b.scrollTop = document.getElementById(a).offsetTop - b.offsetTop;
}
Sample page with the working code:
About this page
blog.deconcept.com is a blog about nerdy internet stuff edited by Geoff Stearns since late 2004.
This entry was published on March 25th, 2005 and is tagged as css, javascript, safari, xhtml.
You can follow any responses to this entry through the RSS 2.0 feed.
Comments are closed
Comments are currently closed on this entry.