Skip to main content

Upgraded to 10.0.15.

Page built on the old mobile builder now loads completely blank, with no error messages in the console.

Any ideas?

All other mobile pages seem to be working correctly.
What might cause a silent failure like that?


BUMP!


BUMP!!


BUMP!!!

I have some inline javascript with a pageload function  on this page, and the pageload function never runs.


Looks like the page ends up in an infinite loop as this part of the VFRemove.js:


function c() {
var a = !1, c = [], d, e, l, k = !g || 0 < h;
if (!m) {
m = !0;
for (a = 0; a < q.length; ++a)
if ((e = q[a]) &amp;&amp; (d = n.getElementById(e.id)))
!e.checkReady || g || d.nextSibling || n &amp;&amp; n.body ? (d = (l = e.override) ? !0 === l ? e.obj : l : d,
e.fn.call(d, e.obj),
q.remove(e),
--a) : c.push(e);
h = 0 === c.length ? 0 : h - 1;
k ? b() : (clearInterval(f),
f = null);
a = !(m = !1)
}
return a
}
function b() {
f || (f = setInterval(function() {
c()
}, p))
}

It occasionally jumps out to the bold timeout portion of this function from onloadwff.js:


function evalScriptsInFrame(e, t, n, i) {
if (!e)
return !1;
if (t || (t = LP_derive_doc()),
!t)
return !1;
i || (i = {});
var r = !1
, o = !1
, a = !1
, l = !1
, s = !1;
void 0 !== i.skipfill &amp;&amp; (r = i.skipfill),
void 0 !== i.skipicons &amp;&amp; (o = i.skipicons),
void 0 !== i.skipformhook &amp;&amp; (a = i.skipformhook),
void 0 !== i.is_launch &amp;&amp; (l = i.is_launch),
void 0 !== i.skiplazydelay &amp;&amp; (s = i.skiplazydelay),
void 0 !== i.cycles &amp;&amp; i.cycles++,
LPVARS.g_pending_eval = !1,
debug_checkpoint("entered evalScriptsInFrame cleared pending state");
var c = LP_get_last_url_history(t);
c || (LP_put_last_url_history(t),
c = LP_get_last_url_history(t));
var u = c.href
, d = c.href_hash
, p = get_doc_location_href(t);
void 0 !== i.cycles &amp;&amp; i.cycles > 10 &amp;&amp; (verbose_log("Abort."),
i.href_hash = d,
i.href = u),
void 0 === i.href || p === u &amp;&amp; i.href_hash === d || (formcachereset(t),
fieldcachereset(t),
LPVARS.g_launch_eval_timestamp = 0,
i.skiplazydelay = !1,
s = !1,
LP_put_last_url_history(t),
c = LP_get_last_url_history(t),
i.href = c.href,
i.href_hash = c.href_hash,
i.cycles = 1);
try {
for (var f = 0; t.frames &amp;&amp; f < t.frames.length; f++)
evalScriptsInFrame(t.frames[f], t.frames[f].document, n, i)
} catch (e) {}
var _ = punycode.URLToASCII(get_doc_location_href(t))
, g = t.readyState;
if (!t.g_content_check_result || is_page_JSON(t))
return t.g_content_check_result = !1,
!1;
if ("complete" == g &amp;&amp; LP_page_is_lazyloader(t, l) &amp;&amp; !s) {
var m = 2500;
l &amp;&amp; (m = 5e3),
LPVARS.g_launch_eval_timestamp ? (LPVARS.g_launch_eval_timestamp + m < LP_gettime() &amp;&amp; (i.skiplazydelay = !0,
LPVARS.g_launch_eval_timestamp = null,
verbose_log("EVAL LAZY LOAD TIMED OUT, END WAIT")),
function(e, t) {
if (t) {
if (countInputs(e) >= 2)
return !0
} else if (countInputs(e) >= 1)
return !0;
return !1
}(t, l) &amp;&amp; (verbose_log("EVAL LAZY LOAD FOUND INPUTS, END WAIT"),
i.skiplazydelay = !0,
LPVARS.g_launch_eval_timestamp = null)) : LPVARS.g_launch_eval_timestamp = LP_gettime(),
verbose_log("EVAL LAZY LOAD, SKIP 1 cycle")
}
if (!n &amp;&amp; "loaded" != g &amp;&amp; "complete" != g) {
var c = LP_get_last_url_history(t);
return c || (LP_put_last_url_history(t),
c = LP_get_last_url_history(t)),
i.href = c.href,
i.href_hash = c.href_hash,
LPVARS.g_pending_eval || (LPVARS.g_pending_eval = !0,
<b>setTimeout(function() {
</b><b> evalScriptsInFrame(e, t, 0, i)
</b><b> }, 100)),
</b> !0
}
var A = !0;
if (t.body &amp;&amp; void 0 !== t.body._lpcrdone &amp;&amp; (t.forms.length != t.body._lpcrdone.formslength || t.location.href != t.body._lpcrdone.doclocationhref || (A = !1)),
t.body &amp;&amp; A)
a || (t.body._lpcrdone = {
formslength: t.forms.length,
doclocationhref: get_doc_location_href(t)
},
hookAllFormSubmits(t));
else if (!n)
return !1;
mpw_monitor_init(),
reset_forcefill_without_fillbest();
for (var h = t.getElementsByTagName("input"), v = 0, f = 0; f < h.length; f++)
"password" == h[f].type &amp;&amp; (v++,
LPVARS.g_lp_page || "lastpass" !== build_id || h[f].addEventListener("keyup", mpw_monitor, !1));
if (LPVARS.g_combat_obfuscation &amp;&amp; !LPVARS.g_isfirefoxsdk &amp;&amp; track_masked_fields(t),
n = n ? 1 : 0,
!too_soon_after_launch() &amp;&amp; !r) {
var _ = punycode.URLToASCII(get_doc_location_href(t));
sendBG({
cmd: "fill",
url: _,
docid: LPVARS.g_fillreqdocs.length,
force: n,
numpass: v,
docstate: get_docstate(t),
docflags: assemble_docflags_object(t),
username_val: get_username_val(t, lp_gettld_url(_)),
source: "autofill"
})
}
return o || setupIcons(t, LPVARS.g_is_specialsite),
LPVARS.g_fillreqdocs[LPVARS.g_fillreqdocs.length] = t,
"complete" != g &amp;&amp; (r || window.addEventListener("load", function() {
sendBG({
cmd: "fill",
url: punycode.URLToASCII(get_doc_location_href(t)),
docid: LPVARS.g_fillreqdocs.length - 1,
force: n,
numpass: v
})
}, !1)),
!0
}

Any thoughts on what might be causing this?


Do you see the same as what is happening here? https://community.skuid.com/t/half-my-mobile-pages-are-disapearing


Thanks, Stephen.
The entire page is blank. We are not using the Feedback feature.


Having the same issue - work around is to put the Skuid Page in a Vforce page and use a visualforce component.


Mansour, what does your VF page markup look like? I’m not getting the workaround to work.


The redirect approach doesn’t work, for obvious reasons, and using a VF page like the one below still results in the same blank page.


<apex:page readonly="true"
showheader="false"
sidebar="false"
doctype="html-5&#46;0"
title="SchedulingMobile">
<skuid:page page="SchedulingMobile"/>
</apex:page>

BUMP!


Created a lightning component that iframed the skuid page.

Below is the code for the component:


<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction" access="global" > <iframe src="{!'ENTER_SKUID_PAGE_URL'}" width="100%" height="2000px" frameBorder="0"/> </aura:component>


Ah, we’re not in lightning, so that’s not an option for us. Thanks, Mansour.


Skuid, any chance you can weigh in on this issue?


Removing all custom javascript and css resources from the page does not change the result. Still loading a blank screen. The problem is not any of our custom code.

This page was working perfectly in 8.15, but will not load in 10.0.16.


Can you post the XML for us to look at?


Gladly. Looks like it’s too much for one post.


Models:
























































































































































































































FORMAT_TIME("h:mm a",{{Start__c}})





























row.updated


Duration__c
Start__c







row.updated


First_Name__c
Last_Name__c
Middle_Name__c

Components:


<components>
<skuidmobile>
<mobilepanels>
<mobilepanel minwidth="200" uniqueid="Main">
<components>
<mobilegrid precision="3" minwidth="50">
<divisions>
<division size="25%" type="specified">
<components>
<mobilebutton label="" style="nav" icon="fa-rotate-left">
<actions>
<action type="createRow" model="FeedbackSignature" appendorprepend="prepend" defaultmodefornewitems="edit"/>
<action type="setPopupPanel" panel="Feedback" title="Feedback"/>
</actions>
<renderconditions logictype="and"/>
<enableconditions logictype="and" message="No recent scheduling interaction exists for feedback.">
<condition type="fieldvalue" enclosevalueinquotes="true" fieldmodel="Feedback" sourcetype="modelproperty" nosourcerowbehavior="deactivate" sourceproperty="hasRows"/>
</enableconditions>
</mobilebutton>
<mobilebutton label="" style="nav" icon="fa-arrow-left">
<actions>
<action type="custom" model="ApptInteractions" condition="Date" snippet="previousDay">
<onerroractions>
<action type="blockUI" message="There was an error" timeout="3000"/>
</onerroractions>
</action>
</actions>
<renderconditions logictype="and"/>
<enableconditions logictype="and"/>
</mobilebutton>
</components>
<renderconditions logictype="and"/>
<interactions/>
</division>
<division size="50%" type="specified">
<components>
<mobilegrid uniqueid="sk-194zVU-157" precision="2" minwidth="50">
<divisions>
<division size="1" type="flex">
<components>
<mobilebutton label="" style="nav" uniqueid="sk-2oZHGj-682" icon="fa-calendar-o">
<actions>
<action type="redirect" window="self" url="/apex/skuid__ui?page=MiniDayCalendar"/>
</actions>
<renderconditions logictype="and"/>
<enableconditions logictype="and"/>
</mobilebutton>
</components>
<renderconditions logictype="and"/>
</division>
<division size="1" type="flex">
<components>
<mobilebutton label="" style="nav" uniqueid="sk-2oZtqJ-709" icon="fa-user-md">
<actions>
<action type="requeryModel" model="NurseSchedule" behavior="standard"/>
<action type="setPopupPanel" panel="NurseSchedule" title="Nurse Schedule"/>
</actions>
<renderconditions logictype="and"/>
<enableconditions logictype="and"/>
</mobilebutton>
</components>
<renderconditions logictype="and">
<rendercondition type="fieldvalue" operator="!=" enclosevalueinquotes="true" fieldmodel="Defaults" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="Account_System__c" value="Role"/>
</renderconditions>
</division>
</divisions>
</mobilegrid>
<mobiledeck showsavecancel="false" searchmethod="server" searchbox="false" tokenizesearch="false" createrecords="false" precision="1" minwidth="400" model="Date" mode="read" emptysearchbehavior="query" cssclass="" uniqueid="DateTemplate">
<components>
<mobilefield id="Start__c" valuehalign="" snippet="renderFilterDate" showhelp="false" cssclass="datepicker" type="CUSTOM" minuteincrement="5">
<renderconditions logictype="and" onhidedatabehavior="keep"/>
<label>&amp;lt;strong&amp;gt;{{$Model.Open.conditions.0.value}}&amp;lt;/strong&amp;gt;</label>
<enableconditions logictype="and"/>
</mobilefield>
</components>
<searchfields/>
<aftersaveactions/>
<renderconditions logictype="and"/>
<conditions/>
</mobiledeck>
</components>
<renderconditions logictype="and"/>
<interactions>
<interaction type="tap">
<actions>
<action type="save"/>
</actions>
</interaction>
</interactions>
</division>
<division size="25%" type="specified">
<components>
<mobilebutton label="" style="nav" icon="fa-plus-square">
<actions>
<action type="updateRow" fieldmodel="Leadlog" field="Appointment_Scheduled__c" enclosevalueinquotes="false" value="false"/>
<action type="updateRow" fieldmodel="Leadlog" field="Lead_Purpose__c" enclosevalueinquotes="true" value="Schedule"/>
<action type="setPopupPanel" panel="UnscheduledLeadPopup" title="Add Unscheduled Lead"/>
</actions>
<renderconditions logictype="and"/>
<enableconditions logictype="and"/>
</mobilebutton>
<mobilebutton label="" style="nav" icon="fa-arrow-right">
<actions>
<action type="custom" snippet="nextDay">
<onerroractions>
<action type="blockUI" message="There was an error" timeout="3000"/>
</onerroractions>
</action>
</actions>
<renderconditions logictype="and"/>
<enableconditions logictype="and"/>
</mobilebutton>
</components>
<renderconditions logictype="and"/>
</division>
</divisions>
</mobilegrid>
<mobiledeck showsavecancel="true" searchmethod="server" searchbox="false" tokenizesearch="true" createrecords="true" precision="1" minwidth="400" model="Open" mode="read" emptysearchbehavior="query" cssclass="open">
<components>
<mobilegrid precision="4" minwidth="50">
<divisions>
<division size="1" type="flex">
<components>
<mobilebutton label="" style="nav" icon="sk-icon-add">
<actions>
<action type="emptyModelData">
<models>
<model>Opening</model>
</models>
</action>
<action type="setCondition" model="Opening" condition="ThisOne" value="{{Id}}"/>
<action type="requeryModel" model="Opening" behavior="standard"/>
<action type="setMainPanel" panel="NewAppointment"/>
</actions>
<renderconditions logictype="or">
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="Open" sourcetype="fieldvalue" field="Status__c" value="Open"/>
<rendercondition type="blank" operator="=" fieldmodel="Open" sourcetype="fieldvalue" field="Status__c" value="null" enclosevalueinquotes="false"/>
</renderconditions>
<enableconditions logictype="and"/>
</mobilebutton>
<mobilebutton label="" style="nav" uniqueid="sk-7q6XT-702" icon="sk-icon-edit">
<actions>
<action type="emptyModelData">
<models>
<model>Opening</model>
</models>
</action>
<action type="setCondition" model="Opening" condition="ThisOne" value="{{Id}}"/>
<action type="requeryModel" model="Opening" behavior="standard"/>
<action type="setMainPanel" panel="NewAppointment"/>
</actions>
<renderconditions logictype="and">
<rendercondition type="fieldvalue" operator="!=" enclosevalueinquotes="true" fieldmodel="Open" sourcetype="fieldvalue" field="Status__c" value="Open"/>
<rendercondition type="blank" operator="!=" fieldmodel="Open" sourcetype="fieldvalue" field="Status__c" value="null" enclosevalueinquotes="false"/>
</renderconditions>
<enableconditions logictype="and"/>
&

Resources (although I removed all these to no effect):


<resources>
<labels/>
<javascript>
<jsitem location="staticresource" name="OptimizeJavascript" cachelocation="false" url="" namespace="" filepath="jquery.inputmask.bundle.js">var params = arguments[0],
$ = skuid.$;
</jsitem>
<jsitem location="staticresource" name="OptimizeJavascript" cachelocation="false" url="" namespace="" filepath="OptimizeJS_General.js">var params = arguments[0],
$ = skuid.$;
</jsitem>
<jsitem location="staticresource" name="OptimizeJavascript" cachelocation="false" url="" namespace="" filepath="OptimizeJS_SchedulingSync.js">var params = arguments[0],
$ = skuid.$;
</jsitem>
<jsitem location="staticresource" name="OptimizeJavascript" cachelocation="false" url="" namespace="" filepath="OptimizeJS_AppointmentDateTime.js">var params = arguments[0],
$ = skuid.$;
</jsitem>
<jsitem location="staticresource" name="OptimizeJavascript" cachelocation="false" url="" namespace="" filepath="OptimizeJS_CustomPicklists.js">var params = arguments[0],
$ = skuid.$;
</jsitem>
<jsitem location="staticresource" name="OptimizeJavascript" cachelocation="false" url="" namespace="" filepath="OptimizeJS_CustomSchedulingForm.js">var params = arguments[0],
$ = skuid.$;
</jsitem>
</javascript>
<css>
<cssitem location="staticresource" name="OptimizeJavascript" cachelocation="false" url="" namespace="" filepath="mobileCSS.css"/>
</css>
</resources>

All of that is wrapped in


<skuidpage unsavedchangeswarning="">
</skuidpage>

BUMP!!!


751e2b078d13899b434e1560917ca7bfcd372ff2.png


I don’t think this is complete XML for the components. It looks like it didn’t finish the ending part


Due to the technical limitations of the lengthy XML, I appreciate you sending it to me via email. We’ll review it together next week as we discussed.


We’ve found that if a page’s XML is pasted into a new page without first checking the mobile box (which disappears after you select to paste XML) then the page will load blank. The XML needs to be brought over as mobile.

That isn’t the issue here, but it might be for someone else coming to this community post.


Reply