Change Location.hash (1) Without History Entry And (2) Without Scrolling The Page
Mar 13, 2009
I'm attempting to implement some deep-linking in my simple AJAX application by setting location.hash, and I've run into two problems:
1) Sometimes setting location.hash seems to send the window on both IE and FF to scroll to the top of the page. I do not want any scrolling to occur. The location.hash change happens in a function which is triggered in an onclick event.
2) Changing location.hash creates a history entry on FF (not on IE)... that's pretty cool for FF, but in this case I do not want a history entry created. How can this be avoided?
I found an example which seems to have avoided both these problems, but cannot decipher the pertinent code: [URL]
I have a problem with IE and location.hash. If I change the hash, the history doesn't "update" and it only keeps one record of the URL. This whole website is AJAX-driven and I need the user to be able to use the forward and back buttons in the browser. Everything works fine and dandy, tested on all the major browsers on PC and Mac, except for IE (both 6 and 7).
In case I wasn't clear, here's a way to reproduce in IE6/7:
Go to google.com Go to yahoo.com#one Go to yahoo.com#two Click back. You'll be back to google.com instead of yahoo.com#one
A page I have shows a different background colour depending on the hash portion of the url as it is first loaded. For example a link to mysite/mypage#0000FF would result in a page with a blue background. But another link, this one to mysite/mypage#FF0000, would not give me a red background if directed to the window where mypage#0000FF was loaded just one moment ago. This is normally to be expected, because the browser thinks same page, no load event, basta.
If I use the search portion, for obvious reasons, that is treated a new page load, even when it is from the cache, but I need the hash here. So how do I detect in mypage the moment when the hash string is changed by a user click event on another page in another window, perhaps even from another domain?
Is it possible to notice a change of window.location.hash without polling?
I'm working on a Ajax-platform (yes, inventing the wheel again) and have finished almost everything except the support for back/forward-buttons. The track I'm working on is "hidden frames" to keep state in window.location.hash. I've seen some solutions along this way that includes polling window.location for a change... which doesn't comply with my otherwise strict event-driven design...
the problem with ajax is that the page content generated cannot be bookmarked, nor does the back button work (in some browsers), ive read about history libraries and all sorts of heavy stuff, but i would like to know one simple thing.i want to add a Code JavaScript:
window.location.hash='#';
upon a link click, but theres a catch, when this hash add's, i don't want the screen to jump to the top, i want it to remain where it is.clarification:
1. i open page 2. i scroll down 3. i click link that adds a hash (maybe with a value #test) 4. the page MUST not scroll back to the top.
note: i see that adding a hash has different effects in different browsers, is there a cross browser way?
What I want is a textbox that the user can enter information into. When they press a key the onkeyup event will simulate a function. All that I can do. The function needs to automatically scroll down the page to the anchor that corresponds to the number the user entered. The web page is a factor finding program. You can enter 2 numbers and it finds all the factors of all the numbers between the 2 you entered. Here is the link: [URL] As you can see, when you try to find factors of numbers a new window opens and there is a search box in the top left. Unfortunately, it doesn't work. If you want to check out the code look at the web page but here is the bit that creates the new window
Here is my relevant code for an arbitrary page (let's call it PAGE_B): <body onload="window.location.hash='anchor'">
With this code, if the user goes from PAGE_A to PAGE_B, he will jump to PAGE_B#anchor after PAGE_B has fully loaded. BUT... if he clicks the back button, instead of returning to PAGE_A (which is what I want), he will return to PAGE_B (without the anchor).
Is there any way to change this behavior... perhaps to replace the anchor of page without touching the history stack?
Basically, my problem is exactly as described in the subject. The problem is somewhat intermittent and unpredictable, but the majority of the time if I just have a statement such as
window.onload=location.hash('somewhere');
the URL is indeed appended, i.e. www.example.com/index.php#somewhere, but window itself doesn't actually move to the bookmark. However, if I do something like
it works fine. On very large pages, the timeout actually has to be a second or two. Any idea why this is happening? I don't know much about JS, but my thought is that it's trying to move to that bookmark before it has actually been loaded in the page; the timeout forces it to wait for the rest of the page to load before going to the bookmark.
I am trying to make sense of the location hash etc. However, I have a few issues that I need to overcome in the process.I have 3 tabs, which need to create a hash and then allow return to that tab on page reload.This is what I need doing: firstly, I need to check the filename accessed and if it is the correct filename (say 'testing.php' or 'testing') then I need to check the GET parameters to see which ones have been called and exist, THEN I need to check the hash to see which tab to load.
I am writing a modification to Invision Power Board that makes replying to post via Ajax.
The "Submit" button is being overrun by Prototype's observe function. When the custom function is executed, I run Event.stop(e) to prevent the actual form from being submitted and reload the page.
I have developed and tested on Safari but users began to report bugs in IE, after investigation I discovered that the line
Code:
Is making IE execute all the code after it, and then execute its own onclick() function as if Event.stop(e) was not there. Commenting this line fixes the problem, the page is not reloaded, but this line is vital to the code.
So why do I need to set the anchor? To support the back button function after a user makes an ajax reply, pressing Back should hide the new content, and pressing Forward should make it visible. (e.g. every time the anchor is changed) This all works nicely. But not in IE.
This only happens the first time the page is visited ever, or clearing cache and visiting it again. Reloading the page fixes the problem but this is not normal behavior and users shouldn't have to reload to use the Ajax fast reply...
If I type http://domain.com/product/5 into my browser I will see the product details in the main div plus a side bar div containing links to other products. This side bar is common to all product views. I click a sidebar link to product 6 and an ajax request updates the main cell with the product 6 information. My location bar will still say /product/5. If I refresh the browser I will see product 5. If I bookmark the page it will be for product 5. If I click the back button I will go to the page I saw before product 5. I know none of these problems with AJAX are new. Why is it that JavaScript can't tell the browser "Now you are looking at http://domain.com/product/6"? Is there a security risk? Is this just something not yet implemented?
I have a site with dynamic pages, where content is fetched via a hidden iframe client/server. I'd like to be able to allow people to bookmark the 'state' of the page, by generating a URL depending on current content. That URL would ideally be visible on the location field of the browser, and bookmarkable.
I have to design a website for my friend and I have no clue how to change the menu image if the page scrolls down, for example If the person clicks on a submenu it will take them to a specific anchor within a page, I have setup a custom jquery scroll bar so all the contents are in the Div that is scrollable.
If you can see that if you click on the submenu which is 2nd hand and repair and rebuild the content will scroll to specific area, but the clients don�t know there location as once the sub menu is clicked the original submenu image appears.So I want them to be able to see if they selected the 2nd tab, the button will stay highlighted and if they scroll down the page when they reach another heading with an anchor the corresponding submenu tab becomes highlighted.
I was wondering if it's possible to write a script that would check a MySQL database table every 5 seconds for the word "closed." If it finds the word in the table, then it would redirect somehow to another page. how to do it without using a meta refresh?
I don't like the way that a link to page top leaves the location bar with something like '#top' appended to it.
So, I'm hooking a listener to the link click event, doing a window.scroll and stopping default action. This is fine as long as the location doesn't already have a hash portion. When it does, I'd like to clean that up without causing a page reload or any server requests.
Is this possible? The closest I got with MSIE is to remove the tail end, but I can't get rid of the actual '#'.
I need to change the way a form on my page works. As currently when you enter in the form information and hit send, you get sent to another page that loads up for testing purposes a basic 'message sent' message. I want the HTML page to load within the ID#Contact which is stylized with a width and a height. I've been directed to the following procedure but I don't know how to make it come together.
jQuery.post() jQuery API .load() jQuery API .ready() jQuery API
Does anyone know if there are any browsers where you must specify "#" as a prefix when setting the hash for the location?
For example, the following would move to the intro section of the document:
window.location.hash = "#intro";
But in the same browser, this would not work:
window.location.hash = "intro";
So far, in the browsers I've tested, the "#" seems to be optional. If this behaviour is compliant, any references, on-line or otherwise, would be welcome.
jQuery - Scrolling browser Window. I have two demos of scrolling page content with jQuery.
This one - [url] is scrolling the contents inside a container and it works as I wanted on Mac/PC
Code:
I need the same effect as above but I need to scroll the whole browser window.
I have a demo here - [url]
Code:
Problem here is on the Mac the transition are jumpy and it seems to flash the first yellow div before sliding up or down. Testing on a PC it will slide down but won't slide up. How can I get the whole browser window to slide up and down with a smooth transition.
I have a textbox on one of my forms that is used to accept a time from the user. I need to write this value to a database to trigger an event later on.
What I'd like to know is...
Are there any functions in javascript that can convert different time formats to a known format (24 hour clock)... 5pm -> 17:00 or 5:00 to 05:00, etc. ???
Assuming that I get the input into a 24 hour format, how can I create a full time/date variable with todays date and the users entered time?
Finally, if the entered time is earlier than the current time, how can I create the above date/time combination using tomorrows date?
On a page of mine a user might submit data several time, which adds an entry to the history each time (similar as http://www.google.com/trends?q=iPod...o=all&date=all). Yet later the user wants to go back to the previous page in one step. Now is it possible to loop backwards through the history until a different page is reached? Has anybody coded something like this?
I'm a javascript rookie trying to figure out a way to get bookmarkable URLS for the images on a single page with multiple slideshows. I must admit I don't really understand the first part of the code on the Cycle demo page for this, which only works for a page with one slideshow:
While I'm shopping for a little guidance, it would also be really cool if the hash tags were semantic somehow with respect to each slideshow e.g.:
just trying to get this to work. Code is inserted into document head. I am using this on a confirmation page that comes up after submitting a form, I want the page to redirect to the previous page. I am also wanting to add a timer indicator to the page as feedback to the user.