/**
* The JS code to check that the page is ready.
+ *
+ * The document must be complete and either M.util.pending_js must be empty, or it must not be defined at all.
*/
- const PAGE_READY_JS = '(typeof M !== "undefined" && M.util && M.util.pending_js && !Boolean(M.util.pending_js.length)) && (document.readyState === "complete")';
+ const PAGE_READY_JS = "document.readyState === 'complete' && " .
+ "(typeof M !== 'object' || typeof M.util !== 'object' || " .
+ "typeof M.util.pending_js === 'undefined' || M.util.pending_js.length === 0)";
/**
* Locates url, based on provided path.
try {
$jscode = trim(preg_replace('/\s+/', ' ', '
return (function() {
- if (typeof M === "undefined") {
- if (document.readyState === "complete") {
- return "";
- } else {
- return "incomplete";
- }
- } else if (' . self::PAGE_READY_JS . ') {
+ if (document.readyState !== "complete") {
+ return "incomplete";
+ }
+
+ if (typeof M !== "object" || typeof M.util !== "object" || typeof M.util.pending_js === "undefined") {
return "";
- } else if (typeof M.util !== "undefined") {
- return M.util.pending_js.join(":");
- } else {
- return "incomplete"
}
+
+ return M.util.pending_js.join(":");
})()'));
$pending = self::evaluate_script_in_session($session, $jscode);
} catch (NoSuchWindow $nsw) {