suggestion
[ikiwiki] / doc / bugs / toggle_fails_on_Safari.mdwn
CommitLineData
27060277 1The [[plugins/toggle]] plugin has no effect when viewed on the Safari web browser.
2
3All toggles appear open all the time.
4
f8180391 5I don't know if this is true for other webkit browsers (the new Konqueror, the iPhone, etc).
27060277 6I'm currently testing in the Safari nightly builds, but I've seen the bug in the current release
7of Safari too.
8
f8180391 9Looking at the Safari Web Inspector, it believes there is a parse error on line 47 of the
27060277 10[[news]] page. This is the definition of the getElementsByClass(class) function.
11
12 45 }
13 46
14 47 function getElementsByClass(class) {
15 SyntaxError: Parse error
16 48 var ret = new Array();
99b59f2d
JH
17
18> Reproduced in epiphany-webkit on debian.
19>
20> Also noticed something interesting when I opened the page in vim. It
21> highlighted the "class" like a type definition, not a variable. Sure
22> enough, replacing with "c" fixed it.
23>
24> I wonder if webkit is actually in the right here, and using a reseved
25> word like, presumably, "class" as a variable name is not legal. As I try
26> to ignore javascript as much as possible, I can't say. [[done]] --[[Joey]]
f42ad32b 27
28>> I also started having a look at this. I found the same issue with the
29>> the variable 'class'. I'm not a javascript guru so I looked on the web
30>> at other implementations of getElementsByClass() and noticed some
31>> things that we might use. I took a bunch of different ideas and came
32>> up with this:
33
34 function getElementsByClass(cls, node, tag) {
35 if (document.getElementsByClass)
36 return document.getElementsByClass(cls, node, tag);
37 if (! node) node = document;
38 if (! tag) tag = '*';
39 var ret = new Array();
40 var pattern = new RegExp("(^|\\s)"+cls+"(\\s|$)");
41 var els = node.getElementsByTagName(tag);
42 for (i = 0; i < els.length; i++) {
43 if ( pattern.test(els[i].className) ) {
44 ret.push(els[i]);
45 }
46 }
47 return ret;
48 }
49
50>> Most of the changes are minor, except that this one will use the
51>> built in function if it is available. That is likely to be significantly
52>> faster. Adding the extra parameters doesn't cause a problem --
53>> they're filled in with useful defaults.
54
55>> I don't know if it is worth making this change, but it is there if you want it.
89e0de5b
JH
56
57>>> Well, it seems to work. Although god only knows about IE. Suppose I
58>>> might as well.. --[[Joey]]