AngularJS 1.7.5 - Объект не поддерживает свойство или метод append в IE9 - PullRequest
0 голосов
/ 31 декабря 2018

Я использую приложение AngularJS 1.7.5 с плагином webkit-polyfill-инжектор.Проблема возникает в IE9 и некоторых версиях, если Edge.

Консоль IE вызывает проблему с этой функцией

function addScriptTag(identifier, json) {

    //prep json
    var pj = JSON.stringify(json);

    //get existing
    var tag = element[0].querySelector('script[identifier="' + identifier + '"]');

    //update existing
    if (tag) {
        tag.innerText = pj;
        return;
    }

    //create new
    var newTag = document.createElement('script');
    newTag.setAttribute("type", "application/ld+json");
    newTag.setAttribute("identifier", identifier);
    newTag.append(pj);

    //add it
    var logoScriptTag = element[0].querySelector('script[type="application/ld+json"]');
    logoScriptTag.insertAdjacentElement('afterend', newTag);
}

Вот конфигурация плагина webkit-polyfill-injector

 var res = {
    mode: 'development',
    context: path.resolve(__dirname, ''),
    entry:
    {
        app: `webpack-polyfill-injector?${JSON.stringify({
            modules: ['./app/app.js'] 
        })}!`
    },

    output: {
        path: outputPath,
        publicPath: '/web/',
        filename: '[name].bundle.js',
        chunkFilename: '[name].bundle.js'
    },

    devServer: {
        contentBase: 'build',
        host:'192.168.1.101',
        port: devServerPort,
        historyApiFallback: {
            index: '/web/',
            rewrites: [
                { from: /\/soccer/, to: '/soccer.html' }
            ]
        },
        watchContentBase: true
    },
    plugins: [

        new PolyfillInjectorPlugin({
            polyfills: [
                'Promise',
                'Array.prototype.find',
            ]
        }),...

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 01 января 2019

Вы можете попробовать использовать AngularJS jqLite append:

//create new
var newTag = document.createElement('script');
newTag.setAttribute("type", "application/ld+json");
newTag.setAttribute("identifier", identifier);
̶n̶e̶w̶T̶a̶g̶.̶a̶p̶p̶e̶n̶d̶(̶p̶j̶)̶;̶
angular.element(newTag).append(pj);

Надеюсь, он не конфликтует с вашим полифиллом.

Для получения дополнительной информации см. Справочник по AngularJS angular.element API- jqLite

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