Не удается изменить атрибут href тега <a> в IE 10

0

Я пытаюсь добавить URI типа "данные: приложение" в атрибут <a> tag href. Это код im, использующий:

    var TestFuntion = (function() {
      var uri = 'data:application/vnd.xls;base64,'
        , template = '<table>{table}</table>'
        , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
        , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { ; return c[p]; }) }
      return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {worksheet: 'test.xls' || 'Worksheet', table: table.innerHTML}
        var x = ( uri + base64(format(template, ctx))).toString();
        $('#testLink').attr('href',x)

      }

})()

Я попробовал разные способы, используя ссылку setAttribute и link.href, чтобы добавить ссылку, но не удался. Этот пример кода работает в firefox и chrome.

Я думаю, проблема заключается в том, что строка href которую я пытаюсь добавить, действительно длинна, как 10k+ charecters.

Это ссылка html:

<a id="testLink" download="Test.xls">
  • 0
    Похоже, что IE9 может принять 5120 в соответствии с этим stackoverflow.com/questions/3721034/… . Возможно, IE10 имеет те же проблемы.
  • 0
    Ты за твой комментарий. это будет действительно раздражающим, если этот предел в 5000 символов истинен .... есть ли способ «обмануть» IE, что мой href является маленьким, тогда это:?
Показать ещё 2 комментария
Теги:
internet-explorer

1 ответ

0

У всех веб-браузеров есть ограничения на длительность URL-адреса. Кроме того, у серверов есть и эти. Обычно неприлично длинный URL указывает, что вы пытаетесь использовать GET, когда вы должны выполнять POST.

Если сервер, к которому вы пытаетесь подключиться, является вашим собственным (я предполагаю, что это так), тогда вы должны использовать POST для отправки таких огромных вызовов. Если вам абсолютно необходимо ПОЛУЧИТЬ, я бы переформатировал ваш URL-адрес на пару GUID или что-то в этом роде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню