I'm trying to get this iframe to dynamically resize by dragging a vertical bar, but it's not working in Mozilla (It originally worked in IE but I've been trying to port it over). Any help will be appreciated.
Here's the resize.js
Here's the HTML:
Here's the resize.js
Code:
var sResizableElement = "TH"; //Elements to be resized
var iResizeThreshold = 8;
var iEdgeThreshold = 8;
var iSizeThreshold = 20;
var sVBarID = "VBar";
var oResizeTarget = null; //position and distance moved
var iStartX = null;
var iEndX = null;
var iSizeX = null;
var oAdjacentCell = null;
function TableResize_CreateVBar() //Creates VBar on load
{
var objItem = document.getElementById(sVBarID);
//alert(objItem);
if(!objItem)
{
objItem = document.createElement("SPAN");
objItem.id = sVBarID;
objItem.style.position = "absolute";
objItem.style.top = "0px";
objItem.style.left = "0px";
objItem.style.height = "0px";
objItem.style.width = "2px";
objItem.style.background = "silver";
objItem.style.borderleft = "1px solid black";
objItem.style.display = "none";
document.body.appendChild(objItem);
//alert(objItem);
}
}
window.addEventListener("load", TableResize_CreateVBar,0);
function TableResize_GetOwnerHeader(objReference) //gets the TH
{
var oElement = objReference;
while(oElement != null && oElement.tagName != null && oElement.tagName != "BODY")
{
if(oElement.tagName.toUpperCase() == sResizeableElement)
{
return oElement; //print alert?
}
oElement = oElement.parentNode;
//alert(oElement);
}
return null;
}
function TableResize_GetFirstColumnCell(objTable, iCellIndex)
{
var oHeaderCell = objTable.rows[0].cells[iCellIndex];
//alert(oHeaderCell);
return oHeaderCell; //alert?
}
function TableResize_CleanUp()
{
var oVBar = document.getElementById(sVBarID);
if(oVBar)
{
oVBar.style.display = "none";
}
iEndX = null;
iSizeX = null;
iStartX = null;
oResizeTarget = null;
oAdjacentCell = null;
//alert(oVBar);
return true;
}
function TableResize_OnMouseMove(objTable, event)
{
var objTH = null;
objTH = objTable.createTHead(objTable, event); //creates a new thead or returns the current thead
//alert(objTH);
if(!objTH)
return;
var oVBar = document.getElementById(sVBarID);
//alert(oVBar);
if (!oVBar)
return;
var oAdjacentCell = objTH.nextSibling;
if((event.layerX >= (objTH.offsetWidth - iEdgeThreshold)) && (oAdjacentCell != null))
{
objTH.style.cursor = "e-resize"; //find correct property
}
else
{
if(objTH.style.cursor)
{
objTH.style.cursor = objTH.style.cursor;
}
else
{
objTH.style.cursor = "e-resize";
}
}
if(oVBar.style.display == "inline")
{
oVBar.style.left = window.event.clientX + document.body.scrollLeft;
document.selection.empty(); //window.event?
}
return true
}
function TableResize_OnMouseDown(objTable, event)
{
var oTargetCell = event.target;
//alert(oTargetCell);
if(!oTargetCell)
return;
if(oTargetCell.parentNode.tagName.toUpperCase() == sResizableElement)
{
oTargetCell = oTargetCell.parentNode;
}
//alert(objTable);
var oHeaderCell = TableResize_GetFirstColumnCell(objTable, oTargetCell.cellIndex);
//alert(oHeaderCell);
if((oHeaderCell.tagName.toUpperCase() == sResizableElement) && (oTargetCell.style.cursor == "e-resize"))
{
iStartX = event.screenX;
oResizeTarget = oHeaderCell;
objTable.setAttribute("Resizing","true");
//Set Capture?
oVBar.style.left = event.clientX + document.body.scrollLeft;
oVBar.style.top = objTable.parentNode.offsetTop + objTable.offsetTop;
oVBar.style.height = objTable.parentNode.offsetHeight;
oVBar.style.display = "inline";
}
//alert(objTable.offsetTop);
return true;
}
function TableResize_OnMouseUp(objTable, event)
{
var oAdjacentCell = null;
var iAdjCellOldWidth = 0;
var iResizeOldWidth = 0;
if(iStartX != null && oResizeTarget != null)
{
iEndX = event.screenX;
iSizeX = iEndX - iStartX;
objTable.setAttribute("Resizing", "false");
if((oResizeTarget.offsetWidth + iSizeX) >= iSizeThreshold)
{
if(Math.abs(iSizeX) >= iResizeThreshold)
{
if(oResizeTarget.nextSibling != null)
{
oAdjacentCell = oResizeTarget.nextSibling;
iAdjCellOldWidth = (oAdjacentCell.offsetWidth);
}
else
{
oAdjacentCell = null;
}
iResizeOldWidth = (oResizeTarget.offsetWidth);
oResizeTarget.style.width = iResizeOldWidth + iSizeX;
if((oAdjacentCell != null) && (oAdjacentCell.tagName.toUpperCase() == sResizableElement))
{
oAdjacentCell.style.width = (((iAdjacentCellOldWidth - iSizeX) >= iSizeThreshold) ? (iAdjCellOldWidth - iSizeX):(oAdjacentCell.style.width = iSizeThreshold))
}
}
}
else
{
oResizeTarget.style.width = iSizeThreshold;
}
}
TableResize_CleanUp();
return true;
}
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Table Test</title> <link rel="stylesheet" type="text/css" href="tabletest.css" /> <script type="text/javascript" src="libs/tableresize.js"></script> </head> <body> <div class="tablecontainer"> <table border="0" cellspacing="0" cellpadding="0" class="mytable" onmousemove="TableResize_OnMouseMove(this,event);" onmouseup="TableResize_OnMouseUp(this,event);" onmousedown="TableResize_OnMouseDown(this,event);"> <tr> <th><iframe id="left_frame" name="left_frame" src="" frameborder=0 ></iframe></th> <th><iframe id="right_frame" name="right_frame" src="" frameborder=0 ></iframe></th> </tr> </table> </div> </body> </html>
Comment