Mootools setHtml не работает в IE - PullRequest
       6

Mootools setHtml не работает в IE

1 голос
/ 17 декабря 2011

Я пытаюсь вставить HTML в простой div. HTML не попадает в div, но если я предупреждаю об этом непосредственно перед вызовом setHTML, то это прекрасно. Код не выполняется при вызове setHTML. Вот звонок Mootools:

$('vmcartmodule').setHTML(response)

Переменная ответа - это мой HTML, собранный из другого файла. Ошибка - неизвестная ошибка Mootools во время выполнения:

setHTML: function(){
    this.innerHTML = $A(arguments).join('');
    return this;
}

Пример моего HTML-кода:

 <div id="opcoCartUpdateTable">
        <div id="row" class="product_row">
        <div class="product_name" >Color: Chocolate Brown<br/> Size: Medium </div>
        <div align="right" class="product_price" >$19.95</div>
        <div class="update_button" ><form method="post" onsubmit="return opcoHandleCartUpdate(this, 0);" style="display: inline;">

    <input type="hidden" name="option" value="com_virtuemart" />
    <input type="text" title="Update Quantity In Cart" class="inputbox" size="4" maxlength="4" name="quantity" value="1" />

    <input type="hidden" name="page" value="" />
    <input type="hidden" name="func" value="cartUpdate" />
    <input type="hidden" id="product_id" name="product_id" value="17" />
    <input type="hidden" id="prod_id" name="prod_id" value="17" />
    <!--input type="hidden" id="Itemid" name="Itemid" value="54" /-->
    <input type="hidden" id="Itemid" name="Itemid" value="53" />
    <input type="hidden" id="description" name="description" value="Color:Chocolate_Brown; Size:Medium" />
    <input type="image" name="update" title="Update Quantity In Cart" src="modules/mod_virtuemart_onepagecheckout/assets/images/update_quantity_cart.png" alt="Update" align="middle" onclick="return opcoHandleCartUpdate(this.parentNode, 0);" />
  </form></div>
        <div class="product_price2"  align="right" >$19.95</div>
      </div>
    </div>

Куда мне смотреть дальше? Любая помощь приветствуется. спасибо

Ответы [ 2 ]

0 голосов
/ 19 декабря 2011

Хорошо, здесь происходили две вещи, которые вызывали проблемы с IE.Никакой другой браузер не работал, и, поверьте мне, я перепробовал все, что смог найти информацию.Первый пытался установить тег формы, используя innerHTML, setHTML или set ('html', myhtml).Это просто не будет работать на всех версиях IE.IE9 и IE10 имели меньше проблем, но все, что старше, просто не будет делать это при нормальных обстоятельствах.Прежде чем вы предложите создать форму и затем динамически заполнить ее с помощью команд DOM, эта ситуация не позволит мне сделать это.Большая часть страницы должна была быть написана динамически.Тем не менее, независимо от того, что было предпринято, Mootools отправит фатальную ошибку или IE отправит фатальную ошибку.В моих попытках я обнаружил более десятка различных ошибок, поэтому дальнейшее обсуждение того, что говорилось об ошибке, не будет полезным в настоящее время.Старая версия Mootools не помогла (я думал, что это был 1.2, но это был 1.1), так как большая часть литературы обсуждает только самые последние версии.Единственное решение, которое сработало, не имеет смысла для меня, но другие использовали его, и IE понравилось.На данный момент я был готов попробовать что угодно.Если у вас возникли те же проблемы, я просто надеюсь, что вы нашли эту страницу.Вам нужно создать поддельный элемент и затем заменить реальный элемент следующим образом:

    oldDiv = document.getElementById('oldIdGoesHere');
    newDiv = document.createElement('div');
    newDiv.setAttribute("id", "oldIdGoesHere"); 
    // or like this newDiv.id = oldDiv.id;

            //This was my response back from Ajax but it can be 
            //just straight HTML instead of the response variable
    newDiv.innerHTML = response;
    newDiv.className = oldDiv.className;
    oldDiv.parentNode.replaceChild(newDiv, oldDiv); 

Я знаю ... Я знаю ... глупый IE.Это было действительно единственное решение в моей ситуации.Спасибо, Ральф

0 голосов
/ 17 декабря 2011

Какую версию Mootools вы используете?В последних версиях $ A () устарела, вы должны использовать Array.from ().

И правильный способ установить HTML для элемента - это .set ('html', yourHtml), метод Element.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...