Skip to main content

Looping through IFrames using Javascript (ie. js)

I'll just paste some code here. It should be self explainatory...



/******************************************************************************************
Requirements:
1. <body onLoad="wt_ad_impression()">
2. <div id="wt_call"></div> somewhere in body
3. <input type="hidden" id="wt_name" name="wt_name" value="wt.AD" /> at Xigla Edit Banner
4. <iframe></iframe> not <iframe /> for FireFox in Ad Zone Grouping
*******************************************************************************************/

var intervalId = 0;
var wt_iframes = null;
var iframeCount = 0;
var iframeIterator = 0;

function wt_ad_impression()
{
alert("called");
wt_iframes = document.getElementsByTagName("iframe");
iframeCount = wt_iframes.length;
intervalId = setInterval(wt_collect, 200);
}

function wt_collect()
{
alert("in wt_collect");
alert("iframeCount="+iframeCount);
alert("iframeIterator="+iframeIterator);
if(iframeIterator < iframeCount)
{
alert("going");
var wt_iframe = wt_iframes[iframeIterator].contentWindow || wt_iframes[iframeIterator].contentDocument;
if (wt_iframe.document)
{
alert("here");
wt_iframe = wt_iframe.document;
var wt_name = wt_iframe.getElementById("wt_name");
if(wt_name)
{
var bugStr = "<IMG border=\"0\" name=\"DCSIMG\" width=\"1\" height=\"1\" SRC=\"http://statse.webtrendslive.com/dcsa8fvfl10000oi64eu0wzzm_4g7c/dcs.gif?dcsuri=" + window.location + "&dcsdat=" + Math.round(10000000000000*Math.random()) + "&WT.ad=" + wt_name.value + "\" />"
alert("value="+bugStr);
var imgElement = document.createElement("img");
imgElement.border = "0";
imgElement.name = "DCSIMG";
imgElement.width = "1";
imgElement.height = "1";
imgElement.src = "http://statse.webtrendslive.com/dcsa8fvfl10000oi64eu0wzzm_4g7c/dcs.gif?dcsuri="
+ window.location + "&dcsdat=" + Math.round(10000000000000*Math.random()) + "&WT.ad="
+ wt_name.value;

var wt_call_div = document.getElementById("wt_call");
wt_call_div.appendChild(imgElement);

}
}
alert("incrementing");
iframeIterator = iframeIterator + 1;
alert("iframeIterator="+iframeIterator);

}
else
{
clearInterval(intervalId);
}
}


To access frames you can also use:

var len = windows.frames.length;
for(var i = 0; i < len; i++)
{
var frame = windows.frames[i];
}


The frames collection can use integers as indexes or a string if the frame has a name ie <iframe name="xyz">.

Comments

Popular posts from this blog

Checking / Creating New Folders from an SMTP Import

To check if a folder exists in the CMS already you have to create a folder list. There is no direct commands to do this. dim folderExists folderExists = false set folderlist = asset.getFolderList("/path/") 'loop through folder list do while folderlist.nextEntry() if folderlist.item("_cmsLabel") = "foldername" folderExists = true exit do end if loop To create a folder in the CMS, first make a Model that only contains a folder. Then do the following: if folderExists = false then 'create folder set dict = system.createDictionary() fId = asset.create(folderName, "/Site/Global/Picture of the Week/", "/System/Models/Directory Builder", dict) end if The parameters for the asset.create("label", "Path", "Model to use", content or dictionary)

Parsing XML in .NET

Let's say you have XML as <root>    <item>       <name1>value1</name1>       <name2>value2</name2>       <name3>value3</name3>    </item>    <item>       <name1>value1</name1>       <name2>value2</name2>    </item> </root> To parse it we use the .NET XmlDocument class: // Create the XmlDocument object XmlDocument xmlDoc = new XmlDocument(); // Load the Xml into the object xmlDoc.Load(objResponse.GetResponseStream()); // Get the element like it was a path XmlNode errorNode = xmlDoc.SelectSingleNode("root/item/name1"); if (errorNode != null) { litResult.Text = errorNode.InnerText; return; }

Duplicate Items in the File -> New menu.

It looks like a bug, but the CMS is trying to figure out what kind of models would apply to the folder in question. To resolve this issue. 1. Goto the problematic folder. 2. Goto View -> Properties -> Access 3. Click on the New Tab 3. Uncheck All 'New Dependency' That's it. That should resolve the problem.