Advertisement:

Author Topic: Code: [Select] function not working in recent web browsers  (Read 7191 times)

Offline PCNetSpec

  • Newbie
  • *
  • Posts: 7
Code: [Select] function not working in recent web browsers
« on: April 23, 2017, 08:46:41 AM »
The "Code: [Select]" function in SMF 2 has for as long as I can remember always displayed "javascript:void(0);" at the bottom left of screen in Firefox/Chromium/Chrome (and probably others) but the function still worked .. ie. when you clicked on "Select" all the text in the code box got selected.

Now it does not, you still get the "javascript:void(0);" message, but clicking "Select" does nothing .. the text in the code box does not get selected.

This seems to be related to web browser version, as if I drop back to Firefox 51 the function works, but it does not work in Firefox 53.

[SMF 2.0.13]
(and this forum .. 2.0.14)
Code: [Select]
test here

Offline Arantor

  • Resident Overthinker
  • SMF Friend
  • SMF Legend
  • *
  • Posts: 67,899
    • Arantor on GitHub
Re: Code: [Select] function not working in recent web browsers
« Reply #1 on: April 23, 2017, 08:48:44 AM »
Does your site use HTTPS?
To assume is to hope that those who came before had the presence of mind and capacity to implement the dreams of those who would come after.

You either die a hero or live long enough to see yourself become the villain. It seems you have chosen which, and now I must do the same.

Offline PCNetSpec

  • Newbie
  • *
  • Posts: 7
Re: Code: [Select] function not working in recent web browsers
« Reply #2 on: April 23, 2017, 08:50:40 AM »
It does yes .. but as I said the function works in Firefox 51 and earlier versions of Chromium/Chrome. It just seems to be in recent browsers.

Here's an example:
Code: [Select]
https://forum.peppermintos.com/index.php/topic,5420.msg54342.html#msg54342

Offline Arantor

  • Resident Overthinker
  • SMF Friend
  • SMF Legend
  • *
  • Posts: 67,899
    • Arantor on GitHub
Re: Code: [Select] function not working in recent web browsers
« Reply #3 on: April 23, 2017, 08:58:20 AM »
I was half expecting you to say no. Firefox has been changing its requirements so that higher or more sensitive features require HTTPS and potentially that would have been one of them. But it's not that.

Hmm, it still works on Chrome 57, and in Firefox 52, but you're right it's broken in FF 53. I wonder what they changed that broke.
To assume is to hope that those who came before had the presence of mind and capacity to implement the dreams of those who would come after.

You either die a hero or live long enough to see yourself become the villain. It seems you have chosen which, and now I must do the same.

Offline PCNetSpec

  • Newbie
  • *
  • Posts: 7
Re: Code: [Select] function not working in recent web browsers
« Reply #4 on: April 23, 2017, 09:08:41 AM »
You're also right, it's working here too in Chromium 57 .. so it appears to be just Firefox 53 where it's broken ???

Offline Illori

  • Project Manager
  • SMF Master
  • *
  • Posts: 47,877
Re: Code: [Select] function not working in recent web browsers
« Reply #5 on: April 23, 2017, 10:56:49 AM »
console says
Quote
IndexSizeError: Index or size is negative or greater than the allowed amount script.js?fnl (line 1366)
Code: [Select]
// Firefox at el.
else if (window.getSelection)
{
var oCurSelection = window.getSelection();
// Safari is special!
if (oCurSelection.setBaseAndExtent)
{
var oLastChild = oCodeArea.lastChild;
oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length);
}
else
{
var curRange = document.createRange();
curRange.selectNodeContents(oCodeArea);

oCurSelection.removeAllRanges();
oCurSelection.addRange(curRange);
}
}

1366 is
Code: [Select]
oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length);
i wonder if we no longer need the code just for firefox.

Offline Arantor

  • Resident Overthinker
  • SMF Friend
  • SMF Legend
  • *
  • Posts: 67,899
    • Arantor on GitHub
Re: Code: [Select] function not working in recent web browsers
« Reply #6 on: April 23, 2017, 10:59:26 AM »
Would need to be tested against Safari (incl. Mobile Safari) as well if it were changed, as well as older Firefox.
To assume is to hope that those who came before had the presence of mind and capacity to implement the dreams of those who would come after.

You either die a hero or live long enough to see yourself become the villain. It seems you have chosen which, and now I must do the same.

Offline Illori

  • Project Manager
  • SMF Master
  • *
  • Posts: 47,877
Re: Code: [Select] function not working in recent web browsers
« Reply #7 on: April 23, 2017, 12:38:04 PM »
interesting that code is the same in SMF 2.1 but it does not have this issue.

Offline fugenkomponist

  • Newbie
  • *
  • Posts: 1
Re: Code: [Select] function not working in recent web browsers
« Reply #8 on: May 04, 2017, 03:52:35 AM »
1366 is
Code: [Select]
oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length);
If you replace 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length by 1 you’ll see that Firefox selects the first line and Chromium more but not always the whole text (I assume something like “until the first closing double quote”). So it seems like this expression gives a node index out of range and different browsers count differently …

As a workaround you can switch back to the old behaviour for Firefox:
Code: [Select]
// Safari is special!
if (oCurSelection.setBaseAndExtent && !is_ff)
{
setBaseAndExtent is supported in Firefox 53 (see release notes at developer.mozilla.org/en-US/Firefox/Releases/53) so I think this is why the behaviour changed in this version.
« Last Edit: May 04, 2017, 04:26:02 AM by fugenkomponist »

Offline PCNetSpec

  • Newbie
  • *
  • Posts: 7
Re: Code: [Select] function not working in recent web browsers
« Reply #9 on: May 04, 2017, 12:05:37 PM »
Code:[Select] now appears to be broken in Chrome/Chromium 58 too .. at least on SMF 2.0.13 (but not here on 2.0.14 ???)

Test URL
Code: [Select]
https://forum.peppermintos.com/index.php/topic,5485.msg54966.html#msg54966
Chromium 58.0.3029.81 console reads
Code: [Select]
Uncaught DOMException: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset 183.
    at smfSelectText (eval at <anonymous> (https://forum.peppermintos.com/index.php/topic,5485.msg54966.html:1:1), <anonymous>:47:407)
    at HTMLAnchorElement.onclick (https://forum.peppermintos.com/index.php/topic,5485.msg54966.html#msg54966:386:485)

Chrome 58.0.3029.96 is indicating the problem lies at the line highlighted in red below
Quote
// Firefox at el.
   else if (window.getSelection)
   {
      var oCurSelection = window.getSelection();
      // Safari is special!
      if (oCurSelection.setBaseAndExtent)
      {
         var oLastChild = oCodeArea.lastChild;
         oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length);
      }
      else
      {
         var curRange = document.createRange();
         curRange.selectNodeContents(oCodeArea);

         oCurSelection.removeAllRanges();
         oCurSelection.addRange(curRange);
      }
   }

For clarity, this is WITHOUT fugenkomponist's workaround .. which I only just spotted, and haven't tried yet as I'm assuming it's a Firefox specific workaround (?) but the problem now isn't.
« Last Edit: May 04, 2017, 12:46:02 PM by PCNetSpec »

Offline Gluz

  • Native Language Support Specialist
  • Sr. Member
  • *
  • Posts: 944
  • Gender: Male
Re: Code: [Select] function not working in recent web browsers
« Reply #10 on: May 06, 2017, 11:48:08 PM »
I've seen this, and after looking through the code I see that this part:

Code: [Select]
// Safari is special!
if (oCurSelection.setBaseAndExtent)
{
var oLastChild = oCodeArea.lastChild;
oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length);
}

Is intended for Safari, but since Firefox 52 they added this:"setBaseAndExtent"

I tested something by adding is_safari to that if, similar to the change fugenkomponist did but to check only for Safari instead filter out only Firefox, since that part is intended for Safari. That makes it work in Firefox 53 and Chrome 58 as intended.

The code looks like this:
Code: [Select]
// Safari is special!
if (oCurSelection.setBaseAndExtent && is_safari)
{
var oLastChild = oCodeArea.lastChild;
oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length);
}

Those browsers are adding support for setBaseAndExtent but is broken, and all software that uses that is getting this errors.
Need help with PHP, HTML, CSS, Themes or MODs?

Quote
Think in spanish, habla en inglés.

Offline Linkjay

  • Jr. Member
  • **
  • Posts: 206
  • Gender: Male
  • eh
    • My Homepage.
Re: Code: [Select] function not working in recent web browsers
« Reply #11 on: May 07, 2017, 01:20:56 AM »
Broken here too. I am on FF 53.
I play games in my free time and volunteer my knowledge and support to the gaming communities of the internet.

You can contact me by these methods:
Use my Contact Script • PM me here • Add me on Steam

Offline tfs

  • Full Member
  • ***
  • Posts: 422
  • Gender: Male
Re: Code: [Select] function not working in recent web browsers
« Reply #12 on: July 06, 2017, 08:56:16 PM »
Has there been any change on this issue? I'm using SMF 2.14 and FF 54.0.1 (32-bit), and the select option is not working. It works in IE. My site is using HTTPS exclusively.
A good tree cannot bring forth evil fruit, neither can an evil tree bring forth good fruit.

Offline FragaCampos

  • Sophist Member
  • *****
  • Posts: 1,281
  • Gender: Male
    • docsPT
Re: Code: [Select] function not working in recent web browsers
« Reply #13 on: July 11, 2017, 05:51:57 PM »
I'm using FF 54.0.1 (32-bit) and SMF 2.0.13 and the select option doesn't work either.

Offline tfs

  • Full Member
  • ***
  • Posts: 422
  • Gender: Male
Re: Code: [Select] function not working in recent web browsers
« Reply #14 on: August 10, 2017, 08:37:44 PM »
Looks like it's also broken on my iPhone with Safari.
A good tree cannot bring forth evil fruit, neither can an evil tree bring forth good fruit.

Offline GravuTrad

  • Senior Translator
  • SMF Hero
  • *
  • Posts: 8,580
  • Gender: Male
  • One of the french SMF translators
Re: Code: [Select] function not working in recent web browsers
« Reply #15 on: August 11, 2017, 05:50:07 AM »
I'm using FF 54.0.1 (32-bit) and SMF 2.0.13 and the select option doesn't work either.

Same thing
On a toujours besoin d'un plus petit que soi! (Petit!Petit!)


Think about Search function before posting.
Pensez à la fonction Recherche avant de poster.

Offline PCNetSpec

  • Newbie
  • *
  • Posts: 7
Re: Code: [Select] function not working in recent web browsers
« Reply #16 on: September 21, 2017, 12:38:03 PM »
Any movement on this issue ?

It seems to be broken in both Firefox 55 and Chromium 60 .. although it is still working in Chrome 58 on this forum (SMF 2.0.14), but not on my forum (SMF 2.0.13) :-\
« Last Edit: September 21, 2017, 12:48:21 PM by PCNetSpec »

Offline tfs

  • Full Member
  • ***
  • Posts: 422
  • Gender: Male
Re: Code: [Select] function not working in recent web browsers
« Reply #17 on: November 15, 2017, 11:10:57 AM »
Still broken on Firefox Quantum 57.0 (x64)

I miss this feature!
A good tree cannot bring forth evil fruit, neither can an evil tree bring forth good fruit.