X
點擊此處開啟此網站的行動版。

技術支援討論區

External Page Jumps does not work properly in Firefox, how to fix this?

已張貼

I have a site created through wordpress platform. I have used page jump (anchor) to redirect one of my links into a specific section from another page. Works fine with Chrome, IE and Microsoft Edge, except with Firefox. It redirects to the page but gone through the bottom of it rather than the specific section where it's suppose to land.

I have a site created through wordpress platform. I have used page jump (anchor) to redirect one of my links into a specific section from another page. Works fine with Chrome, IE and Microsoft Edge, except with Firefox. It redirects to the page but gone through the bottom of it rather than the specific section where it's suppose to land.

被選擇的解決方法

Hmm, Firefox is computing the vertical position of that box before applying the CSS rules that move the box into the sidebar and way up the page. (Example screenshot attached.)

I think this is due to a recent change in Firefox that changed the sequence of certain actions with odd side effects like this. Possibly related issue (the window.print() script command running before styles are applied, starting in Firefox 67): https://support.mozilla.org/questions/1262244

As a workaround, you could re-navigate to the hash using something like this:

/* Scroll to anchor */
function pgshow(e){
    var elId = window.location.hash;
    if (elId.length > 1){
        el = document.getElementById(elId.substr(1));
        if (el) el.scrollIntoView(true);
    }
}
// pageshow fires after load and on Back/Forward
window.addEventListener('pageshow', pgshow);

If you only want to navigate on the initial page load (i.e., not if the user is going Back/Forward to the page in the same tab), it would make more sense to hook into the load event:

從原來的回覆中察看解決方案 1
引用

額外的系統細節

應用程式

  • User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0

更多資訊

Wesley Branton
  • Top 10 Contributor
617 個解決方法 5141 個答案

Do you have a link to the website that we can try for ourselves?

Do you have a link to the website that we can try for ourselves?
這篇文章有幫助嗎?
引用
cor-el
  • Top 10 Contributor
  • Moderator
17528 個解決方法 158483 個答案

Is this a link (anchor) to a position in an (i)frame or directly on the web page?

Is this a link (anchor) to a position in an (i)frame or directly on the web page?
這篇文章有幫助嗎?
引用

提出問題者

Here's the page that you can access: https://wem.technology/dark-web-why-should-business-consider-dark-web-scanning/

On the right sidebar, next to recent posts, there is a CTA. The button that says Free Audit will link to this page: https://wem.technology/it-support-london/#free-network-sec-audit-form. The element's ID where it should point is #free-network-sec-audit-form as shown in the URL. It is situated in the right sidebar, a yellow-like-coupon form that says FREE NETWORK SECURITY AUDIT.

Here's the page that you can access: https://wem.technology/dark-web-why-should-business-consider-dark-web-scanning/ On the right sidebar, next to recent posts, there is a CTA. The button that says '''Free Audit''' will link to this page: ''https://wem.technology/it-support-london/#free-network-sec-audit-form''. The element's ID where it should point is '''#free-network-sec-audit-form''' as shown in the URL. It is situated in the right sidebar, a yellow-like-coupon form that says '''FREE NETWORK SECURITY AUDIT'''.
這篇文章有幫助嗎?
引用
jscher2000
  • Top 10 Contributor
8758 個解決方法 71665 個答案

選擇的解決方法

Hmm, Firefox is computing the vertical position of that box before applying the CSS rules that move the box into the sidebar and way up the page. (Example screenshot attached.)

I think this is due to a recent change in Firefox that changed the sequence of certain actions with odd side effects like this. Possibly related issue (the window.print() script command running before styles are applied, starting in Firefox 67): https://support.mozilla.org/questions/1262244

As a workaround, you could re-navigate to the hash using something like this:

/* Scroll to anchor */
function pgshow(e){
    var elId = window.location.hash;
    if (elId.length > 1){
        el = document.getElementById(elId.substr(1));
        if (el) el.scrollIntoView(true);
    }
}
// pageshow fires after load and on Back/Forward
window.addEventListener('pageshow', pgshow);

If you only want to navigate on the initial page load (i.e., not if the user is going Back/Forward to the page in the same tab), it would make more sense to hook into the load event:

Hmm, Firefox is computing the vertical position of that box before applying the CSS rules that move the box into the sidebar and way up the page. (Example screenshot attached.) I think this is due to a recent change in Firefox that changed the sequence of certain actions with odd side effects like this. Possibly related issue (the window.print() script command running before styles are applied, starting in Firefox 67): https://support.mozilla.org/questions/1262244 As a workaround, you could re-navigate to the hash using something like this: <pre>/* Scroll to anchor */ function pgshow(e){ var elId = window.location.hash; if (elId.length > 1){ el = document.getElementById(elId.substr(1)); if (el) el.scrollIntoView(true); } } // pageshow fires after load and on Back/Forward window.addEventListener('pageshow', pgshow); </pre> If you only want to navigate on the initial page load (i.e., not if the user is going Back/Forward to the page in the same tab), it would make more sense to hook into the load event: * https://developer.mozilla.org/docs/Web/API/Window/pageshow_event * https://developer.mozilla.org/docs/Web/API/Window/load_event
這篇文章有幫助嗎? 1
引用

提出問題者

The image you have sent points to the wrong coupon that I have meant. You probably have thought the one below the article. What I meant is the one in the right sidebar. Sorry if I didn't make it clear. But anyway, with what you've explained seems that it is, for the meantime, impossible for the step that I did. The code you've posted, will this be inserted in the footer area? And where do I put the element ID/anchor in that part? Sorry, I'm a bit confused.

The image you have sent points to the wrong coupon that I have meant. You probably have thought the one below the article. What I meant is the one in the right sidebar. Sorry if I didn't make it clear. But anyway, with what you've explained seems that it is, for the meantime, impossible for the step that I did. The code you've posted, will this be inserted in the footer area? And where do I put the element ID/anchor in that part? Sorry, I'm a bit confused.
這篇文章有幫助嗎?
引用
jscher2000
  • Top 10 Contributor
8758 個解決方法 71665 個答案

jcignoro said

The image you have sent points to the wrong coupon that I have meant. You probably have thought the one below the article. What I meant is the one in the right sidebar.

That is the correct coupon, and that is what it looks like in the split second after Firefox scrolls down to it before it gets moved to the right sidebar. You may need to bypass the cache to see it: Ctrl+Shift+r

But anyway, with what you've explained seems that it is, for the meantime, impossible for the step that I did. The code you've posted, will this be inserted in the footer area? And where do I put the element ID/anchor in that part?

The script would go into WordPress somewhere* so that when the user loads a page with an anchor, the browser scrolls to the anchor if it's not there already. The script just works with whatever hash it finds on the URL, you don't need to change anything else.

* Each WordPress theme is different, so I don't know how you would integrate custom JavaScript into yours.

Maybe I can post it as a WordPress plugin at some point? That would be a new adventure...

''jcignoro [[#answer-1248907|said]]'' <blockquote> The image you have sent points to the wrong coupon that I have meant. You probably have thought the one below the article. What I meant is the one in the right sidebar. </blockquote> That is the correct coupon, and that is what it looks like in the split second after Firefox scrolls down to it before it gets moved to the right sidebar. You may need to bypass the cache to see it: Ctrl+Shift+r <blockquote> But anyway, with what you've explained seems that it is, for the meantime, impossible for the step that I did. The code you've posted, will this be inserted in the footer area? And where do I put the element ID/anchor in that part? </blockquote> The script would go into WordPress somewhere* so that when the user loads a page with an anchor, the browser scrolls to the anchor if it's not there already. The script just works with whatever hash it finds on the URL, you don't need to change anything else. ''* Each WordPress theme is different, so I don't know how you would integrate custom JavaScript into yours.'' Maybe I can post it as a WordPress plugin at some point? That would be a new adventure...
這篇文章有幫助嗎? 1
引用

提出問題者

I just inserted it in the footer of the theme that I have used. That just works like magic! A big thank for the help @jscher2000! It answered my question perfectly.

jscher2000 said

As a workaround, you could re-navigate to the hash using something like this:
/* Scroll to anchor */
function pgshow(e){
    var elId = window.location.hash;
    if (elId.length > 1){
        el = document.getElementById(elId.substr(1));
        if (el) el.scrollIntoView(true);
    }
}
// pageshow fires after load and on Back/Forward
window.addEventListener('pageshow', pgshow);
I just inserted it in the footer of the theme that I have used. That just works like magic! A big thank for the help @jscher2000! It answered my question perfectly. ''jscher2000 [[#answer-1248902|said]]'' <blockquote> As a workaround, you could re-navigate to the hash using something like this: <pre>/* Scroll to anchor */ function pgshow(e){ var elId = window.location.hash; if (elId.length > 1){ el = document.getElementById(elId.substr(1)); if (el) el.scrollIntoView(true); } } // pageshow fires after load and on Back/Forward window.addEventListener('pageshow', pgshow); </pre> </blockquote>
這篇文章有幫助嗎? 0
引用
r.puma 0 個解決方法 1 個答案

I have the same issue on a jimdo website an i hope you can help me out with this. I've set the anchor like this on https://www.angelikawalthert.ch/galerie/hotel-titlis-palace-engelberg/ :

<a href="https://www.angelikawalthert.ch/#hoteltitlispalaceengelberg" target="_self" title="hoteltitlispalaceengelberg">Projekte</a>

and the target on https://www.angelikawalthert.ch/ like this :

The strange thing is that sometimes it works and sometimes not. But it works properly on Chrome and Safari.

Thanks a lot!

I have the same issue on a jimdo website an i hope you can help me out with this. I've set the anchor like this on https://www.angelikawalthert.ch/galerie/hotel-titlis-palace-engelberg/ : <p><a href="https://www.angelikawalthert.ch/#hoteltitlispalaceengelberg" target="_self" title="hoteltitlispalaceengelberg">Projekte</a></p> and the target on https://www.angelikawalthert.ch/ like this : <div id="hoteltitlispalaceengelberg"> </div> The strange thing is that sometimes it works and sometimes not. But it works properly on Chrome and Safari. Thanks a lot!
這篇文章有幫助嗎?
引用
jscher2000
  • Top 10 Contributor
8758 個解決方法 71665 個答案

Hi r.puma, you might need to use the same workaround.

Hi r.puma, you might need to use the same workaround.
這篇文章有幫助嗎? 0
引用
問個問題

如果您還沒有帳號,您必須先 登入您的帳號 來回覆文章。請 開始一個新問題