diff --git a/Recipe.min.js b/Recipe.min.js index d4d2b57..ddf0d93 100644 --- a/Recipe.min.js +++ b/Recipe.min.js @@ -1540,6 +1540,82 @@ void function() { try { } catch (ex) { /* do something maybe */ throw ex; } }(); +/* + RECIPE: caretRangeFromPoint + ------------------------------------------------------------- + Author: Grisha Lyukshin + Description: Find use of caretRangeFromPoint in script. +*/ + +void function() { + window.CSSUsage.StyleWalker.recipesToRun.push( function caretRangeFromPoint(/*HTML DOM Element*/ element, results) { + var nodeName = element.nodeName; + var script = ".caretRangeFromPoint" + if (nodeName == "SCRIPT") + { + results[nodeName] = results[nodeName] || { count: 0, }; + // if inline script. ensure that it's not our recipe script and look for string of interest + if (element.text !== undefined && element.text.indexOf(script) != -1) + { + results[nodeName].count++; + } + else if (element.src !== undefined && element.src != "") + { + var xhr = new XMLHttpRequest(); + xhr.open("GET", element.src, true); + //xhr.setRequestHeader("Content-type", "text/javascript"); + xhr.send(); + xhr.onreadystatechange = function() { + if(this.readyState == this.HEADERS_RECEIVED ) { + if (xhr.status === 200 && xhr.responseText.indexOf(script) != -1) + { + results[nodeName].count++; + } + } + } + } + } + return results; + }); +}(); +/* + RECIPE: elementFromPoint + ------------------------------------------------------------- + Author: Grisha Lyukshin + Description: Find use of elementFromPoint in script. +*/ + +void function() { + window.CSSUsage.StyleWalker.recipesToRun.push( function elementFromPointUsage(/*HTML DOM Element*/ element, results) { + var nodeName = element.nodeName; + var script = ".elementFromPoint" + if (nodeName == "SCRIPT") + { + results[nodeName] = results[nodeName] || { count: 0, }; + // if inline script. ensure that it's not our recipe script and look for string of interest + if (element.text !== undefined && element.text.indexOf(script) != -1) + { + results[nodeName].count++; + } + else if (element.src !== undefined && element.src != "") + { + var xhr = new XMLHttpRequest(); + xhr.open("GET", element.src, true); + //xhr.setRequestHeader("Content-type", "text/javascript"); + xhr.send(); + xhr.onreadystatechange = function() { + if(this.readyState == this.HEADERS_RECEIVED ) { + if (xhr.status === 200 && xhr.responseText.indexOf(script) != -1) + { + results[nodeName].count++; + } + } + } + } + } + return results; + }); +}(); /* RECIPE: z-index on static flex items ------------------------------------------------------------- diff --git a/cssUsage.src.js b/cssUsage.src.js index 9995397..0a6f663 100644 --- a/cssUsage.src.js +++ b/cssUsage.src.js @@ -1540,6 +1540,82 @@ void function() { try { } catch (ex) { /* do something maybe */ throw ex; } }(); +/* + RECIPE: caretRangeFromPoint + ------------------------------------------------------------- + Author: Grisha Lyukshin + Description: Find use of caretRangeFromPoint in script. +*/ + +void function() { + window.CSSUsage.StyleWalker.recipesToRun.push( function caretRangeFromPoint(/*HTML DOM Element*/ element, results) { + var nodeName = element.nodeName; + var script = ".caretRangeFromPoint" + if (nodeName == "SCRIPT") + { + results[nodeName] = results[nodeName] || { count: 0, }; + // if inline script. ensure that it's not our recipe script and look for string of interest + if (element.text !== undefined && element.text.indexOf(script) != -1) + { + results[nodeName].count++; + } + else if (element.src !== undefined && element.src != "") + { + var xhr = new XMLHttpRequest(); + xhr.open("GET", element.src, true); + //xhr.setRequestHeader("Content-type", "text/javascript"); + xhr.send(); + xhr.onreadystatechange = function() { + if(this.readyState == this.HEADERS_RECEIVED ) { + if (xhr.status === 200 && xhr.responseText.indexOf(script) != -1) + { + results[nodeName].count++; + } + } + } + } + } + return results; + }); +}(); +/* + RECIPE: elementFromPoint + ------------------------------------------------------------- + Author: Grisha Lyukshin + Description: Find use of elementFromPoint in script. +*/ + +void function() { + window.CSSUsage.StyleWalker.recipesToRun.push( function elementFromPointUsage(/*HTML DOM Element*/ element, results) { + var nodeName = element.nodeName; + var script = ".elementFromPoint" + if (nodeName == "SCRIPT") + { + results[nodeName] = results[nodeName] || { count: 0, }; + // if inline script. ensure that it's not our recipe script and look for string of interest + if (element.text !== undefined && element.text.indexOf(script) != -1) + { + results[nodeName].count++; + } + else if (element.src !== undefined && element.src != "") + { + var xhr = new XMLHttpRequest(); + xhr.open("GET", element.src, true); + //xhr.setRequestHeader("Content-type", "text/javascript"); + xhr.send(); + xhr.onreadystatechange = function() { + if(this.readyState == this.HEADERS_RECEIVED ) { + if (xhr.status === 200 && xhr.responseText.indexOf(script) != -1) + { + results[nodeName].count++; + } + } + } + } + } + return results; + }); +}(); /* RECIPE: z-index on static flex items ------------------------------------------------------------- diff --git a/src/recipes/caretRangeFromPoint.js b/src/recipes/caretRangeFromPoint.js new file mode 100644 index 0000000..c93c9a2 --- /dev/null +++ b/src/recipes/caretRangeFromPoint.js @@ -0,0 +1,38 @@ +/* + RECIPE: caretRangeFromPoint + ------------------------------------------------------------- + Author: Grisha Lyukshin + Description: Find use of caretRangeFromPoint in script. +*/ + +void function() { + window.CSSUsage.StyleWalker.recipesToRun.push( function caretRangeFromPoint(/*HTML DOM Element*/ element, results) { + var nodeName = element.nodeName; + var script = ".caretRangeFromPoint" + if (nodeName == "SCRIPT") + { + results[nodeName] = results[nodeName] || { count: 0, }; + // if inline script. ensure that it's not our recipe script and look for string of interest + if (element.text !== undefined && element.text.indexOf(script) != -1) + { + results[nodeName].count++; + } + else if (element.src !== undefined && element.src != "") + { + var xhr = new XMLHttpRequest(); + xhr.open("GET", element.src, true); + //xhr.setRequestHeader("Content-type", "text/javascript"); + xhr.send(); + xhr.onreadystatechange = function() { + if(this.readyState == this.HEADERS_RECEIVED ) { + if (xhr.status === 200 && xhr.responseText.indexOf(script) != -1) + { + results[nodeName].count++; + } + } + } + } + } + return results; + }); +}(); \ No newline at end of file diff --git a/src/recipes/elementFromPoint.js b/src/recipes/elementFromPoint.js new file mode 100644 index 0000000..f294ec3 --- /dev/null +++ b/src/recipes/elementFromPoint.js @@ -0,0 +1,38 @@ +/* + RECIPE: elementFromPoint + ------------------------------------------------------------- + Author: Grisha Lyukshin + Description: Find use of elementFromPoint in script. +*/ + +void function() { + window.CSSUsage.StyleWalker.recipesToRun.push( function elementFromPointUsage(/*HTML DOM Element*/ element, results) { + var nodeName = element.nodeName; + var script = ".elementFromPoint" + if (nodeName == "SCRIPT") + { + results[nodeName] = results[nodeName] || { count: 0, }; + // if inline script. ensure that it's not our recipe script and look for string of interest + if (element.text !== undefined && element.text.indexOf(script) != -1) + { + results[nodeName].count++; + } + else if (element.src !== undefined && element.src != "") + { + var xhr = new XMLHttpRequest(); + xhr.open("GET", element.src, true); + //xhr.setRequestHeader("Content-type", "text/javascript"); + xhr.send(); + xhr.onreadystatechange = function() { + if(this.readyState == this.HEADERS_RECEIVED ) { + if (xhr.status === 200 && xhr.responseText.indexOf(script) != -1) + { + results[nodeName].count++; + } + } + } + } + } + return results; + }); +}(); \ No newline at end of file diff --git a/tests/recipes/caretRangeFromPoint.html b/tests/recipes/caretRangeFromPoint.html new file mode 100644 index 0000000..31e036d --- /dev/null +++ b/tests/recipes/caretRangeFromPoint.html @@ -0,0 +1,40 @@ + + +
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, +sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, +sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. +Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+ + \ No newline at end of file diff --git a/tests/recipes/elementFromPoint.html b/tests/recipes/elementFromPoint.html new file mode 100644 index 0000000..8c04801 --- /dev/null +++ b/tests/recipes/elementFromPoint.html @@ -0,0 +1,20 @@ + + + +Some text here
+ + + + \ No newline at end of file