Hey All,
I sometimes need to tell my rules to wait for a certain object to pop into existence (either a JS object or something of that nature). I can normally do this using setInterval in a Rule Event, and then the rule fires when needed Yay!
Can I do something similar in a Condition, but say with DOM Loaded as the Rule Event? I can't seem to get it to work right - I'm not a dev by trade so if I'm using something basic incorrectly here feel free to yell at me:
var IntervalIterator = 0;
var MyInterval = setInterval(
function(){
var DataLayer = window.pageData;
if(typeof DataLayer !== "undefined" && DataLayer !== null && DataLayer !==""){
clearInterval(MyInterval);
return true //Tell the condition that it is true now
}else if (IntervalIterator == 5){ //ensure we don't have a runaway function
clearInterval(MyInterval);
return false // The condition fails because object never loaded
}else{
IntervalIterator++;
}
}, 1000); //end setInterval
Solved! Go to Solution.
Views
Replies
Total Likes
Hi, @J2_2 -
There are a ton of options here, and they all depend on your site setup and preference. One option I'll offer would be to create TWO rules as follows:
Rule 1: Direct call rule that does whatever it is you need to do when the element/object you're waiting for is available
Rule 2: Page load rule that runs everywhere. The only action in this rule is to poll for the element/object. When/if it exists, it calls the DCR (rule 1 above).
Another approach might be to create a data element that points to a specific key on your data layer, then set the rule so that it fires on data element change.
Hi, @J2_2 -
There are a ton of options here, and they all depend on your site setup and preference. One option I'll offer would be to create TWO rules as follows:
Rule 1: Direct call rule that does whatever it is you need to do when the element/object you're waiting for is available
Rule 2: Page load rule that runs everywhere. The only action in this rule is to poll for the element/object. When/if it exists, it calls the DCR (rule 1 above).
Another approach might be to create a data element that points to a specific key on your data layer, then set the rule so that it fires on data element change.
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Like
Replies
Views
Likes
Replies
Views
Likes
Replies