Как я могу преодолеть различные DOM для Webkit / Mozilla, когда пытаюсь перемещаться по нему программно? - PullRequest
0 голосов
/ 23 марта 2012

Проблема

Я создаю веб-сайт, который широко использует Ajax и Javascript.Проект начался до появления Google Chrome, и мне нужно обновить код, который работает в Mozilla, чтобы теперь одинаково хорошо работать в Chrome.

Область, с которой у меня есть проблема, касается всплывающего слоя DIV, которыйпоявляется, в которой отображается форма.Основная страница также содержит форму.Каждая форма отправляется с использованием Ajax.У меня проблема с этим всплывающим окном.

Javascript, с которым у меня возникают трудности, используется на многих страницах, поэтому, если я смогу это исправить, он решит множество проблем..

Он состоит из одного текстового поля и кнопки, содержащейся в структуре таблицы.У него нет тега формы, только элемент ввода текста и стандартная кнопка.Нажатие на кнопку запускает событие onClick, отправляющее необходимые параметры в функцию addpop ().

Функция addpop () - идентифицировать все родительские узлы элементов формы (все они находятся в одном родительском узле).).Позже, другой скрипт вызывается для идентификации каждого элемента, но до этого все разваливается.

Предполагается, что родительский узел получает активный элемент, который вызвал событие.Он работает в Firefox, но Webkit, похоже, имеет другую структуру, и поэтому не работает в этом.Я надеюсь добиться замены заменяющей части кода.

Я надеюсь, что этого можно добиться без внесения каких-либо изменений в страницы, но только в javascript, чтобыУ меня нет стеков страниц для работы и обновления.

Javascript выглядит следующим образом:

function addpop(tbl, cid, e, divName, dd, elemName, res)
{
    // reset result message
    var result = document.getElementById(res);
    result.innerHTML = '<br>';

    // get form name for use in the validation
    // get the triggering element
    if (window.document.activeElement)
    {
        e = window.document.activeElement;
    }
    else
    {
        var el = window.event;
        e = e.target ? e.target : e.srcElement; // event target
    }

    // Note in comments below the result of echoing the current node name
    // in Chrome and Firefox at the points specified.

    // chrome = object HTMLBodyElement    (ff = object HTMLInputElement)

    if (e != null) { e = e.parentNode; }
    // chrome = object HTMLHtmlElement    (ff = object HTMLTableCellElement)

    if (e != null) { e = e.parentNode; }
    // chrome = object HTMLDocument       (ff = object HTMLTableRowElement)

    if (e != null) { e = e.parentNode; }
    // chrome = null                      (ff = object HTMLTableSectionElement)

    if (e != null) { e = e.parentNode; }
    // chrome = null                      (ff = object HTMLTableElement)

    // At this point, in Firefox, e=[object HTMLTableElement]
    // and I need to get Webkit to reflect the same, so that when e is passed
    // to validate_form() it will be treated the same way as it does when sent
    // by firefox. So basically I need to replace those 4 "if" statements above
    // for something with is normalized to both browsers.

str = validate_form(e);
};

Для полноты, я включаю код DIV ниже, которыйсодержит всплывающую форму:

<div id="popCustomer">
    <a id="popCustomerX" onclick="disablePopup('popCustomer', 0);" style="cursor:pointer;">x</a>  
    <h1>Add New Customer</h1>  
    <p><font size="1.9em" face="Tahoma, Arial, Helvetica, sans-serif">&nbsp;&nbsp;Please see the help guidelines before adding a new customer.</font></p>

    <p><font size="1.9em" face="Tahoma, Arial, Helvetica, sans-serif">&nbsp;&nbsp;To add new customer, complete the form below. Don't forget to press 'Save' afterwards.</font></p>
    <br />
    <div id="result1" align="center"><br></div>

    <table width="82%" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td colspan="2" align="center" height="25" class="th">CUSTOMER DETAILS</td>
        </tr>
        <tr>
          <td colspan="2">&nbsp;</td>
        </tr>
        <tr>
          <td align="right">Customer Name*:&nbsp;</td>
          <td height="25">
              <input name="cust_comp_name" type="text" id="cust_comp_name" tabindex="1" size="33" maxlength="60" param="required" desc="Customer name" />
          </td>
        </tr>
        <tr>
            <td width="40%" height="25">&nbsp;</td>
            <td width="60%"><input type="button" name="button1" id="button1" class="button" value="Save" onclick="addpop('customers','<?=$company_id;?>',event, 'popCustomer', 'selcustomers', 'cust_comp_name', 'result1');">
            </td>
        </tr>
    </table>
</div>

Я знаю, что html содержит сильно устаревшие элементы, а также об отсутствии эффективного использования CSS во всем.Я начал этот проект в 2007 году, когда резал зубы и просто вытаскивал его из шкафа, чтобы вытереть пыль и посмотреть, смогу ли я закончить его.Я не профессиональный кодер.У меня есть огромное количество операций по очистке, чтобы привести его в соответствие со стандартом производства - я знаю это!

Любые указатели на эти четыре ошибочных утверждения «если» будут высоко оценены.Я потратил 3 дня, пытаясь заставить этот раздел работать над webkit.Спасибо.

...