I've got a script that determines the true position of an element in
the page by cycling up the .offsetParent elements all the way up to the
<body> element and tallying up the .offsetLeft values returned by each
element. It works fine on the major browsers (IE, Moz, NS) on PC but
Safari on the Mac returns "0" for the offsetLeft right off the body tag
when it should be a greater value than that....
I have reimplemented the non-standard <marquee> element (in a very simplified fashion), moving around a DIV using offsetParent and offsetWidth.
It works fine in Mozilla (1.7.5) and Safari (1.2.4), but fails miserably in IE6/Win : the content scrolls off screen to the right hand side, although it should be going to the left.....
I noticed something odd yesterday—or at least something I didn't expect. When I call offsetParent() on an element with position: fixed, I get back a reference to the body tag rather than the nearest positioned element in the DOM. Is this expected behavior? If so, why?
I am including some sample code that will illustrate what I'm talking about: a relatively positioned div with one absolutely positioned and one fixed positioned child. Load the example in a browser that supports window.console and you'll see log statements showing the result of a call to offsetParent() for each. I would expect both the absolute and fixed position divs to return the relatively positioned one as their offset parents, but offsetParent says the fixed position div's offset parent is the body element.
I saw this behavior with both jquery 1.3.2 and 1.4, and in Safari4.0.4 (6531.21.10) and Firefox 3.5.7 on a Mac running OS X 10.6.2.
I am currently getting the position of a DOM element by using offsetLeft & offsetTop. This works fine, but I notice that when I use these properties in Internet Explorer the values returned are slightly different from when I use them with Firefox, Safari, or Camino.
I am basically trying to create a DIV over a certain part of a fixed table, so I use offsetLeft & offsetTop to get the coordinates of that table and then position my DIV based on those coordinates. The problem is that with Internet Explorer it seems to be a few pixels off compared to when I do it with Firefox, Safari, or Camino.
Is there a way to calculate the .offsetLeft or .left of a character in a string relative the element that contains the string? I'm just trying to wrap each character in an element and position the characters independently, so I have to set the .position to absolute, and set the .left and .top on each element as I create it so I can move the elements later on.
The very simple code (below) works fine in Safari (and Chrome, Firefox etc.), but it doesn't work in Mobile Safari. Why?(You can find a working example at: http:[url]....)
Code: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head>[code]......
Does anyone know if there is a quick test to tell if Safari 1.3 (or 2.0 will suffice) is the browser that doesn't rely on the typical navigator.* methods? For instance, there is the good 'ol document.all test for MSIE... Looking to add Safari support to my tty editor for my cms.
I am currently working on a project that displays preview of a jpeg in an iframe. we can edit this preview - like increasing its zoom level and changing pages , images etc. This works fine with IE on windows but whenit comes to Safari on Mac , the preview is lost on refreshing the browser.
I have noticed that this problem occurs when ever I use Iframes. Although the main jsp page is refreshed and shown, the jsp page that is the source for iframe contained in the main jsp page is not shown.
that some_script would not be called until the <body> was completely loaded - is this not the case? With Safari 1.3 I seem to have to delay inside some_script (there is some php in the <body> that slows down the loading). Since I happen to have a spare iframe in my <body>, I load a tiny bit of html in it whose job is simply to set a "loaded" flag, tested inside my delay code.
What I was observing was that some fields inside a <form> in the <body>, whose values are set by some_script, were, with Safari, not visible until I clicked in one of them - then they all popped into sight. I wasn't seeing this with other browsers and a delay mechanism fixed it.
It was as if the onload was triggered as soon as it was encountered rather than when the loading was complete.
I am having problems with a website. It uses javascript to choose a payment option and then calculates the price accordingly. It works on I.E and firefox, but not on safari. A few of our clients use it so it has to be sorted out urgently.
I have no idea why it wouldn't work in safari and i don't have broad enough skills for that.
I have a form that has a Javascript function being called when a button is clicked. The function works properly in every browser except Safari and IE 5.2 for Mac. Any ideas?
I'm writing some stuff where I wish to allow the cursor keys to control elements in a page. This has not been a problem except with Safari which appears to duplicate the keydown and keyup events which are fired when the cursor keys are pressed. I.e. pressing and releasing say, K, results in one keydown event followed by one keyup event. Press any of the cursor keys results in two keydown events followed by two keyup events.....
I have a big <table> and I have added an onmousedown handler. When I get back the event in IE and Firefox, the individual <td> element appears in window.event.srcElement (IE) and in event.target (Firefox). However in Safari the target is just the <table>, not the <td>.
I need to get back the <td> associated with the event, and I would not like to put an onmousedown handler on each table cell because there are a lot of them. Does anybody know how I can get the event and figure out which table cell was clicked?
The stuff I've built recently works (in the sense that it does what I'm expecting it to do without any errors or warnings) in IE and FF but fails silently in Safari. I don't have a Mac to test on. I write some stuff and send it to the client who tests and reports back.
I don't do any browser sniffing, I test for a feature for I try to use it...
Are there any known oddities about scripting for Safari that might possibly help me out.
I have a small Javascript problem with that mutch love web browser safari, I tested the code on all other browsers PC (Win) and Linux and IE on the mac and it seams to work ok, but for some reason it will not work with safari.
In my applications I've a ton of scripts that use remote XML file to fill forms and evaluate contents; In these scripts I always use the method SelectNode (that, with some workaround, works fine also in Mozilla).
I've just found out that this method doesnt work in Safari browser, therefore my applications are not usable by this browser. Can anyone provide me any solution or workaround to be able to read XML files in Safari wihout rewriting all of my scripts?
Ok, I've been noodling with this for several days now and I'm starting to go crazy. Does Apple's Safari browser support drag events on Textarea elements? The few specs and docs I've found seem to indicate that it does but I can't get it to work for the life of me. I've tired everything I can think of to try get notifications for the events:
ondragenter ondragleave ondragover ondrop
Not only do these events not seem to fire over the body of the textarea, but also the textarea seems to sink the events (so setting event handlers on document or body report no events while occurring over the text area). Even stranger the 1px border around the textarea *does* respond to the events, but once the mouse moves into the actual textarea it stops. I thought perhaps it was that native OSX UI elements don't fire events, but all "regular" mouse events seem to work (onmousemove, onclick, etc...).
Even more frustratingly, if I absolutely position a new element above the textarea (zIndex of new element textarea's) to try and catch these events, the text area *below* the element still sinks the events (even though it's not in the bubbling or capture path for the event). In other words, a div absolutely positioned above the textarea won't fire dragevents anywhere it overlaps the textarea. I can't click on the textarea below or manipulate it in any way, but dragevents still seem to be sunk by the textarea.
I've tried using event capturing vs. bubbling as well as different methods of applying the event handler to the text area (textarea.ondragenter, vs addEventListener(textarea,dragenter,true/ false) all to no avail.
I'm assuming Safari's textarea just doesn't work with drag events, unless I'm missing something really basic. Anyone gotten this to work? Any pointers or tips. Google searches have resulted in nothing, I can't imagine I'm the only person who's tried to get this to work as it seems like manipulating drag events on textareas would be a common thing to want to do.
In firefox, this script works just fine. But in safari, it doesn't do anything and I can't figure out why.The intention of this code is to just create a draggable item.
The following script is scrolling my page smoothly, as it is supposed to, in IE and FF however it is not working at all in Safari, any version. The page is:
[URL]
When working correctly, you click the nav buttons in the left sidebar, the page scrolls to the appropriate section.