TypeError: невозможно получить свойство 'create' с неопределенной или нулевой ссылкой

Я пытаюсь изменить мои jscripts с ecmascript3 на современные стандарты ECMAScript, потому что Microsoft Edge не поддерживает мои старые jscripts, у меня есть эта ошибка:

[объект Ошибка]: {описание: "Невозможно получить свойство" создать "с неопределенной или нулевой ссылкой"

У меня есть объявление моего объекта в общем HTML:

var JDWBAR1 = new JDWITEM(0);  

Тогда конструктор JDWITEM во внешнем.js:

function JDWITEM(width) {
this.x = 0;
this.y = 0;
this.width  = width;
this.height = 0;
this.align    = "left";
this.minWidth = 0;
this.inverted = false;
this.menus = new Array();
this.created = false;
// Set default sizes.
this.border    = 2;
this.padding   = 4;
this.separator = 1;
// Set default colors.
this.borderColor  = "#000000";
this.hdrFgColor   = "#000000";
this.hdrBgColor   = "#999999";
this.hdrHiFgColor = "#ffffff";
this.hdrHiBgColor = "#666666";
this.itmFgColor   = "#000000";
this.itmBgColor   = "#cccccc";
this.itmHiFgColor = "#ffffff";
this.itmHiBgColor = "#000080";
// Set default fonts.
this.hdrFontFamily = "Arial,Helvetica,sans-serif";
this.hdrFontStyle  = "plain";
this.hdrFontWeight = "bold";
this.hdrFontSize   = "10pt";
this.itmFontFamily = "MS Sans Serif,Arial,Helvetica,sans-serif";
this.itmFontStyle  = "plain";
this.itmFontWeight = "bold";
this.itmFontSize   = "8pt";
// Define methods.
this.setSizes    = JDWITEMSetSizes;
this.setColors   = JDWITEMSetColors;
this.setFonts    = JDWITEMSetFonts;
this.addNAVm     = JDWITEMaddNAVm;
this.create      = JDWITEMCreate;    // Here the create fuction ...
this.hide        = JDWITEMHide;
this.show        = JDWITEMShow;
this.moveTo      = JDWITEMMoveTo;
this.moveBy      = JDWITEMMoveBy;
this.getzIndex   = JDWITEMGetzIndex;
this.setzIndex   = JDWITEMSetzIndex;
this.getWidth    = JDWITEMGetWidth;
this.getMinWidth = JDWITEMGetMinWidth;
this.getAlign    = JDWITEMGetAlign;
this.setAlign    = JDWITEMSetAlign;
this.resize      = JDWITEMResize;
this.invert      = JDWITEMInvert;
this.isInverted  = JDWITEMIsInverted;
// Add to the list.
this.index = JDWITEMs.length;
JDWITEMs[this.index] = this;
}

Теперь это функция JDWITEMCreate:

function JDWITEMCreate() {
var str;
var i, j;
var norm, high, end;
var width, height;
var x, y;
var scrX, scrY;
if (this.created || (!JDWMinNS4 && !JDWMinIE4))
return;
// Build HTML for filler and header layers.
str = "";
// For IE4, need to scroll to end of page before inserting HTML.
if (JDWMinIE4 && !JDWMinIE5) {
scrX = getPageScrollX();
scrY = getPageScrollY();
window.scrollTo(getPageWidth(), getPageHeight());
}
if (JDWMinNS4)
str += '<layer name="JDWITEM' + this.index + '_filler"></layer>\n'
+  '<layer name="JDWITEM' + this.index + '_hdrsBase">\n';
if (JDWMinIE4)
str += '<div id="JDWITEM' + this.index + '_filler"'
+  ' style="position:absolute;">'
+  '</div>\n'
+  '<div id="JDWITEM' + this.index + '_hdrsBase"'
+  ' style="position:absolute;">\n';
// Build HTML for the headers.
for (i = 0; i < this.menus.length; i++) {
norm = '<table border=0 cellpadding=' + this.padding
+ ' cellspacing=0'
+ (this.menus[i].hdrWidth > 0 ? ' width=' + this.menus[i].hdrWidth : '')
+ ((JDWMinIE4 && !JDWMinIE5) ? ' id="JDWITEM' + this.index + '_tbl' + i + '"': '')
+ '><tr><td'
+ (this.menus[i].hdrWidth == 0 ? ' nowrap=1' + this.menus[i].hdrWidth : '')
+ '>'
+ '<span style="color:' + this.hdrFgColor + ';'
+ 'font-family:' + this.hdrFontFamily + ';'
+ 'font-size:' + this.hdrFontSize + ';'
+ 'font-style:' + this.hdrFontStyle + ';'
+ 'font-weight:' + this.hdrFontWeight + ';">';
high = '<table border=0 cellpadding=' + this.padding
+ ' cellspacing=0'
+ (this.menus[i].hdrWidth > 0 ? ' width=' + this.menus[i].hdrWidth : '')
+ '><tr><td'
+ (this.menus[i].hdrWidth == 0 ? ' nowrap=1' + this.menus[i].hdrWidth : '')
+ '>'
+ '<span style="color:' + this.hdrHiFgColor + ';'
+ 'font-family:' + this.hdrFontFamily + ';'
+ 'font-size:' + this.hdrFontSize + ';'
+ 'font-style:' + this.hdrFontStyle + ';'
+ 'font-weight:' + this.hdrFontWeight + ';">';
end  = '</span></td></tr></table>';
if (JDWMinNS4)
str += '<layer name="JDWITEM' + this.index + '_head' + i + '">'
+  norm + this.menus[i].items[0].text + end
+  '</layer>\n'
+  '<layer name="JDWITEM' + this.index + '_headHigh' + i + '">'
+  high + this.menus[i].items[0].text + end
+  '</layer>\n'
+  '<layer name="JDWITEM' + this.index + '_headDummy' + i + '">'
+  '</layer>\n';
if (JDWMinIE4) {
str += '<div id="JDWITEM' + this.index + '_head' + i + '"'
+  ' style="position:absolute;">'
+  norm + this.menus[i].items[0].text + end
+  '</div>\n'
+  '<div id="JDWITEM' + this.index + '_headHigh' + i + '"'
+  ' style="position:absolute;">'
+  high + this.menus[i].items[0].text + end
+  '</div>\n'
+  '<div id="JDWITEM' + this.index + '_headDummy' + i + '"'
+  ' style="position:absolute;">';
if (JDWMinIE55)
str += '<table cellspacing=0 width="100%" height="100%"><tr><td>&nbsp;</td></tr></table>';
str += '</div>\n';
   }
}
if (JDWMinNS4) {
str += '</layer>\n';
this.baseLayer = new Layer(this.width);
this.baseLayer.document.open();
this.baseLayer.document.write(str);
this.baseLayer.document.close();
}
if (JDWMinIE4) {
str += '</div>\n';
str = '<div id="JDWITEM' + this.index + '"'
+ ' style="position:absolute;left:0px;top:0px;">\n'
+ str
+ '</div>\n';
document.body.insertAdjacentHTML("beforeEnd", str);
this.baseLayer = getLayer("JDWITEM" + this.index);
}
// Position and G6JDWinitialize each header.
width = 0;
height = 0;
for (i = 0; i < this.menus.length; i++) {
this.menus[i].hdrNormLayer = getLayer('JDWITEM' + this.index + '_head' + i);
this.menus[i].hdrHighLayer = getLayer('JDWITEM' + this.index + '_headHigh' + i);
this.menus[i].hdrDmmyLayer = getLayer('JDWITEM' + this.index + '_headDummy' + i);
height = Math.max(height, getHeight(this.menus[i].hdrNormLayer));
this.height = height + 2 * this.border;
// Fix for IE4 to resize headers to fit text width.
if (JDWMinIE4 && !JDWMinIE5) {
width = this.menus[i].hdrWidth;
if (width == 0)
width = eval('document.all.JDWITEM' + this.index + '_tbl' + i + '.clientWidth');
JDWITEMIEResizeLayer(this.menus[i].hdrNormLayer, width, height);
JDWITEMIEResizeLayer(this.menus[i].hdrHighLayer, width, height);
JDWITEMIEResizeLayer(this.menus[i].hdrDmmyLayer, width, height);
   }
}
x = this.border;
y = this.border;
for (i = 0; i < this.menus.length; i++) {
width = Math.max(this.menus[i].hdrWidth, getWidth(this.menus[i].hdrNormLayer));
if (this.menus[i].width == 0)
this.menus[i].width = width + 2 * this.border;
moveLayerTo(this.menus[i].hdrNormLayer, x, y);
setBgColor(this.menus[i].hdrNormLayer, this.hdrBgColor);
clipLayer(this.menus[i].hdrNormLayer, 0, 0, width, height);
inheritLayer(this.menus[i].hdrNormLayer);
moveLayerTo(this.menus[i].hdrHighLayer, x, y);
setBgColor(this.menus[i].hdrHighLayer, this.hdrHiBgColor);
clipLayer(this.menus[i].hdrHighLayer, 0, 0, width, height);
hideLayer(this.menus[i].hdrHighLayer);
moveLayerTo(this.menus[i].hdrDmmyLayer, x, y);
if (JDWMinIE4)
JDWITEMIEResizeLayer(this.menus[i].hdrDmmyLayer, width, height);
clipLayer(this.menus[i].hdrDmmyLayer, 0, 0, width, height);
inheritLayer(this.menus[i].hdrDmmyLayer);
this.menus[i].hdrDmmyLayer.highLayer = this.menus[i].hdrHighLayer;
this.menus[i].hdrLeft = x;
x += width + this.border;
this.menus[i].hdrRight = x;
}
// Save resulting width of headers and total width.
this.minWidth = x;
this.width = Math.max(this.minWidth, this.width);
// Position and G6JDWinitialize base, filler and headers base layers.
moveLayerTo(this.baseLayer, this.x, this.y);
setBgColor(this.baseLayer, this.borderColor);
if (JDWMinIE4)
JDWITEMIEResizeLayer(this.baseLayer, this.width, this.height);
clipLayer(this.baseLayer, 0, 0, this.width, this.height);
this.fillerLayer = getLayer('JDWITEM' + this.index + '_filler');
moveLayerTo(this.fillerLayer, this.border, this.border);
setBgColor(this.fillerLayer, this.hdrBgColor);
width = this.width - 2 * this.border;
height = this.height - 2 * this.border;
if (JDWMinIE4)
JDWITEMIEResizeLayer(this.fillerLayer, width, height);
clipLayer(this.fillerLayer, 0, 0, width, height);
inheritLayer(this.fillerLayer);
this.hdrsBaseLayer = getLayer('JDWITEM' + this.index + '_hdrsBase');
if (this.align == "left")
this.hdrsOffsetX = 0;
else if (this.align == "center")
this.hdrsOffsetX = Math.round((this.width - this.minWidth) / 2);
else if (this.align == "right")
this.hdrsOffsetX = this.width - this.minWidth;
else
this.hdrsOffsetX = Math.min(parseInt(this.align, 10), this.width - this.minWidth);
moveLayerTo(this.hdrsBaseLayer, this.hdrsOffsetX, 0);
setBgColor(this.hdrsBaseLayer, this.borderColor);
if (JDWMinIE4)
JDWITEMIEResizeLayer(this.hdrsBaseLayer, this.minWidth, this.height);
clipLayer(this.hdrsBaseLayer, 0, 0, this.minWidth, this.height);
inheritLayer(this.hdrsBaseLayer);
// Set up event handling and positioning for headers.
for (i = 0; i < this.menus.length; i++) {
this.menus[i].hdrDmmyLayer.index = this.index;
this.menus[i].hdrDmmyLayer.offsetX = this.menus[i].hdrLeft - this.border;
if (this.menus[i].hdrDmmyLayer.offsetX + this.menus[i].width > this.width)
this.menus[i].hdrDmmyLayer.offsetX = this.menus[i].hdrRight - this.menus[i].width;
this.menus[i].hdrDmmyLayer.offsetY = this.height - this.border;
this.menus[i].hdrDmmyLayer.onmouseover = JDWITEMHeaderOn;
this.menus[i].hdrDmmyLayer.onmouseout = JDWITEMHeaderOff;
if (JDWMinNS4) {
this.menus[i].hdrDmmyLayer.document.highLayer = this.menus[i].hdrHighLayer;
this.menus[i].hdrDmmyLayer.document.link = this.menus[i].items[0].link;
this.menus[i].hdrDmmyLayer.document.captureEvents(Event.MOUSEUP);
this.menus[i].hdrDmmyLayer.document.onmouseup = JDWITEMItemClick;
}
if (JDWMinIE4) {
this.menus[i].hdrDmmyLayer.highLayer = this.menus[i].hdrHighLayer;
this.menus[i].hdrDmmyLayer.link = this.menus[i].items[0].link;
this.menus[i].hdrDmmyLayer.onclick = JDWITEMItemClick;
   }
}
// Build the drop down menus.
norm = '<table border=0 cellpadding=' + this.padding
+ ' cellspacing=0 width="100%"><tr><td>'
+ '<span style="color:' + this.itmFgColor + ';'
+ 'font-family:' + this.itmFontFamily + ';'
+ 'font-size:' + this.itmFontSize + ';'
+ 'font-style:' + this.itmFontStyle + ';'
+ 'font-weight:' + this.itmFontWeight + ';">';
high = '<table border=0 cellpadding=' + this.padding
+ ' cellspacing=0 width="100%"><tr><td>'
+ '<span style="color:' + this.itmHiFgColor + ';'
+ 'font-family:' + this.itmFontFamily + ';'
+ 'font-size:' + this.itmFontSize + ';'
+ 'font-style:' + this.itmFontStyle + ';'
+ 'font-weight:' + this.itmFontWeight + ';">';
end  = '</span></td></tr></table>';
for (i = 0; i < this.menus.length; i++) {
width = this.menus[i].width - 2 * this.border;
str = "";
for (j = 1; j < this.menus[i].items.length; j++) {
if (JDWMinNS4)
str += '<layer name="JDWITEM' + this.index + '_menu' + i + '_norm' + j + '"'
+  ' width=' + width + '>'
+  norm + this.menus[i].items[j].text + end
+  '</layer>\n'
+  '<layer name="JDWITEM' + this.index + '_menu' + i + '_high' + j + '"'
+  ' width=' + width + '>'
+  high + this.menus[i].items[j].text + end
+  '</layer>\n'
+  '<layer name="JDWITEM' + this.index + '_menu' + i + '_dmmy' + j + '"'
+  ' width=' + width + '>'
+  '</layer>\n';
if (JDWMinIE4) {
str += '<div id="JDWITEM' + this.index + '_menu' + i + '_norm' + j + '"'
+  ' style="position:absolute;width:' + width + 'px;">'
+  norm + this.menus[i].items[j].text + end
+  '</div>\n'
+  '<div id="JDWITEM' + this.index + '_menu' + i + '_high' + j + '"'
+  ' style="position:absolute;width:' + width + 'px;">'
+  high + this.menus[i].items[j].text + end
+  '</div>\n'
+  '<div id="JDWITEM' + this.index + '_menu' + i + '_dmmy' + j + '"'
+  ' style="position:absolute;width:' + width + 'px;">';
if (JDWMinIE55)
str += '<table cellspacing=0 width="100%" height="100%"><tr><td>&nbsp;</td></tr></table>';
str += '</div>\n';
   }
}
if (JDWMinNS4) {
this.menus[i].baseLayer = new Layer(this.menus[i].width);
this.menus[i].baseLayer.document.open();
this.menus[i].baseLayer.document.write(str);
this.menus[i].baseLayer.document.close();
}
if (JDWMinIE4) {
str = '<div id="JDWITEM' + this.index + '_menu' + i + '"'
+ ' style="position:absolute;left:0px; top:0px;'
+ 'width:' + this.menus[i].width + 'px;visibility:hidden;">\n'
+ str
+ '</div>\n';
document.body.insertAdjacentHTML("beforeEnd", str);
this.menus[i].baseLayer = getLayer("JDWITEM" + this.index + "_menu" + i);
   }
}
// Restore original scroll position in IE4.
if (JDWMinIE4 && !JDWMinIE5)
window.scrollTo(x, y);
// Position and G6JDWinitialize each menu.
for (i = 0; i < this.menus.length; i++) {
moveLayerTo(this.menus[i].baseLayer, this.menus[i].hdrDmmyLayer.offsetX, this.menus[i].hdrDmmyLayer.offsetY);
setBgColor(this.menus[i].baseLayer, this.borderColor);
if (this.menus[i].items.length > 1) {
this.menus[i].hdrDmmyLayer.menuLayer = this.menus[i].baseLayer;
if (JDWMinNS4)
this.menus[i].hdrDmmyLayer.document.menuLayer = this.menus[i].baseLayer;
}
else {
this.menus[i].hdrDmmyLayer.menuLayer = null;
if (JDWMinNS4)
this.menus[i].hdrDmmyLayer.document.menuLayer = this.menus[i].baseLayer;
}
// Position and G6JDWinitialize each item in the menu.
x = this.border;
y = this.border;
width = this.menus[i].width - 2 * this.border;
for (j = 1; j < this.menus[i].items.length; j++) {
this.menus[i].items[j].normLayer = getLayer('JDWITEM' + this.index + '_menu' + i + '_norm' + j);
this.menus[i].items[j].highLayer = getLayer('JDWITEM' + this.index + '_menu' + i + '_high' + j);
this.menus[i].items[j].dmmyLayer = getLayer('JDWITEM' + this.index + '_menu' + i + '_dmmy' + j);
height = getHeight(this.menus[i].items[j].normLayer);
moveLayerTo(this.menus[i].items[j].normLayer, x, y);
setBgColor(this.menus[i].items[j].normLayer, this.itmBgColor);
clipLayer(this.menus[i].items[j].normLayer, 0, 0, width, height);
inheritLayer(this.menus[i].items[j].normLayer);
moveLayerTo(this.menus[i].items[j].highLayer, x, y);
setBgColor(this.menus[i].items[j].highLayer, this.itmHiBgColor);
clipLayer(this.menus[i].items[j].highLayer, 0, 0, width, height);
hideLayer(this.menus[i].items[j].highLayer);
moveLayerTo(this.menus[i].items[j].dmmyLayer, x, y);
if (JDWMinIE4)
JDWITEMIEResizeLayer(this.menus[i].items[j].dmmyLayer, width, height);
clipLayer(this.menus[i].items[j].dmmyLayer, 0, 0, width, height);
inheritLayer(this.menus[i].items[j].dmmyLayer);
this.menus[i].items[j].dmmyLayer.highLayer = this.menus[i].items[j].highLayer;
this.menus[i].items[j].dmmyLayer.onmouseover = JDWITEMItemOn;
this.menus[i].items[j].dmmyLayer.onmouseout = JDWITEMItemOff;
if (JDWMinNS4) {
this.menus[i].items[j].dmmyLayer.document.highLayer = this.menus[i].items[j].highLayer;
this.menus[i].items[j].dmmyLayer.document.parentHighLayer = this.menus[i].hdrHighLayer;
this.menus[i].items[j].dmmyLayer.document.menuLayer = this.menus[i].baseLayer;
this.menus[i].items[j].dmmyLayer.document.link = this.menus[i].items[j].link;
this.menus[i].items[j].dmmyLayer.document.captureEvents(Event.MOUSEUP);
this.menus[i].items[j].dmmyLayer.document.onmouseup = JDWITEMItemClick;
}
if (JDWMinIE4) {
this.menus[i].items[j].dmmyLayer.highLayer = this.menus[i].items[j].highLayer;
this.menus[i].items[j].dmmyLayer.parentHighLayer = this.menus[i].hdrHighLayer;
this.menus[i].items[j].dmmyLayer.menuLayer = this.menus[i].baseLayer;
this.menus[i].items[j].dmmyLayer.link = this.menus[i].items[j].link;
this.menus[i].items[j].dmmyLayer.onclick = JDWITEMItemClick;
}
y += height + this.separator;
}
width = this.menus[i].width;
height = y - this.separator + this.border;
this.menus[i].baseLayer.width = this.menus[i].width;
this.menus[i].baseLayer.height = height;
if (JDWMinIE4)
JDWITEMIEResizeLayer(this.menus[i].baseLayer, width, height);
clipLayer(this.menus[i].baseLayer, 0, 0, width, height);
this.menus[i].baseLayer.parentHighLayer = this.menus[i].hdrHighLayer;
this.menus[i].baseLayer.onmouseout = ECSmenuOff;
}
this.created = true;
this.resize(this.width);
showLayer(this.baseLayer);
}

Наконец ошибка здесь:

function G6JDWinit()
{
    try {

          if (top.location.href.indexOf("LinkSpecial=1")==-1){
            fullWidth = getWindowWidth() - (JDWMinNS4 && getWindowHeight() < 
            getPageHeight() ? 16 : 0);
            JDWBAR1.create();  // Here the error: "Unable to get property 'create' of undefined or null reference"
            JDWBAR1.moveTo(0,-getWindowHeight()+43);
            JDWBAR1.setzIndex(1);
            JDWBAR1.resize(fullWidth);
            JDWBAR1.setAlign(getWindowWidth()+60);
            JDWBAR1.hide();
            JDWBAR2.create();
            JDWBAR2.moveBy(0,-getWindowHeight()+17);
            JDWBAR2.resize(fullWidth);
            JDWBAR2.setzIndex(2);
            NAVupdatePOSY();
         }
         if (typeof(insWindowOnLoad)!="undefined"){
             insWindowOnLoad(top.document.body);    
             insWindowOnLoad(document.body);
         }
         if (typeof(insAfterLoad)!="undefined"){
             insAfterLoad()
         }
     }

    catch (error) {
        console.error(error);
        // expected output: SyntaxError: unterminated string literal
        // Note - error messages will vary depending on browser
    }
}

Пожалуйста, я знаю, что кода много, но любая помощь в определении Wy Edge выдает эту ошибку, код прекрасно работает с IE11 в режиме совместимости с IE7 (ES3), еще раз спасибо за любую помощь...

0 ответов

Другие вопросы по тегам