画面上の 2 つの div を同期しようとしていますが、何らかの理由で Firefox では機能しません。
私が見ることができるエラーは発生していません。単に機能しません。私はこれに困惑しています。他のすべてのブラウザで機能します。
誰かが助けてくれれば、私はとても感謝しています!
以下のスクリプトのほとんどを含めました...
CSS Stylesheet.css :
#menuFrame
{
BORDER-RIGHT: #cfcfcf 1px;
BORDER-TOP: #cfcfcf 1px;
FONT-SIZE: 8pt;
LEFT: 164px;
OVERFLOW: hidden;
BORDER-LEFT: #cfcfcf 1px;
WIDTH: 520px;
BORDER-BOTTOM: #cfcfcf 1px;
TOP: -50px;
HEIGHT: 50px
}
#dataFrame
{
BORDER-RIGHT: #cfcfcf 1px;
BORDER-TOP: #cfcfcf 1px;
LEFT: 164px;
OVERFLOW: scroll;
BORDER-LEFT: #cfcfcf 1px;
WIDTH: 545px;
BORDER-BOTTOM: #cfcfcf 1px;
TOP: -318px;
HEIGHT: 284px
}
スクリプトsyncScroll.js
// This is a function that returns a function that is used
// in the event listener
function getOnScrollFunction(oElement)
{
try
{
return function ()
{
if (oElement._scrollSyncDirection == "horizontal" || oElement._scrollSyncDirection == "both")
oElement.scrollLeft = event.srcElement.scrollLeft;
if (oElement._scrollSyncDirection == "vertical" || oElement._scrollSyncDirection == "both")
oElement.scrollTop = event.srcElement.scrollTop;
};
}
catch(ex)
{
alert ('Error getOnScrollFunction/n'+ ex.message)
}
}
// This function adds scroll syncronization for the fromElement to the toElement
// this means that the fromElement will be updated when the toElement is scrolled
function addScrollSynchronization(fromElement, toElement, direction)
{
try
{
removeScrollSynchronization(fromElement);
fromElement._syncScroll = getOnScrollFunction(fromElement);
fromElement._scrollSyncDirection = direction;
fromElement._syncTo = toElement;
//browser safe
if(toElement.attachEvent)
{
toElement.attachEvent("onscroll", fromElement._syncScroll);
}
else
{
toElement.addEventListener("scroll", fromElement._syncScroll,true);
}
}
catch(ex)
{
alert ('Error addScrollSynchronization\n'+ ex.message)
}
}
// removes the scroll synchronization for an element
function removeScrollSynchronization(fromElement)
{
try
{
if (fromElement._syncTo != null)
{
if(fromElement.detachEvent)
{
fromElement._syncTo.detachEvent("onscroll", fromElement._syncScroll);
}
else
{
fromElement._syncTo.removeEventListener("scroll", fromElement._syncScroll,true, false);
}
fromElement._syncTo = null;
fromElement._syncScroll = null;
fromElement._scrollSyncDirection = null;
}
catch(ex)
{
alert ('Error removeScrollSynchronization\n'+ ex.message)
}
}
HTML:
<html>
<head>
<META http-equiv="Content-Type" content="text/html">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
<link rel="stylesheet" href="Stylesheet.css" type="text/css">
<script type="text/javascript" src="syncscroll.js"/>
</HEAD>
<BODY bgcolor="#FFFFFF" onload="addScrollSynchronization(document.getElementById('menuFrame'), document.getElementById('dataFrame'), 'horizontal');">
<table class="PageLayout" align="center" border="0">
<tr>
<td class="DataCell">
<div id="menuFrame">
<table class="tblMenuframe">
<tr class="MenuFrameRow">
<td>Menu 1</td>
<td>Menu 2</td>
<td>Menu 3</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td class="DataCell">
<div id="dataFrame">
<table class="tblDataFrame">
<tr>
<td>Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
</tr>
</table
</div>
</td>
</tr>
</table>
</body>
</html>