it-swarm.com.de

Aktivieren Sie Inline-Javascript in LESS

Ich möchte Inline-js in meinen less-Dateien verwenden, erhalte jedoch die folgende Meldung:

Inline-JavaScript ist nicht aktiviert. Ist es in Ihren Optionen festgelegt?

Wie kann ich das aktivieren?

12
captainbudapest

Ich hatte das gleiche Problem, ich benutze Webpack mit weniger Loader, ich musste die Javascript-Option in der Less Loader-Konfiguration hinzufügen:

{
        test: /\.less$/,
        use: [{
            loader: "style-loader"
        }, {
            loader: "css-loader"
        }, {
            loader: "less-loader",
            options: {
                javascriptEnabled: true
            }
        }]
}

Ich habe im Quellcode von weniger Compiler gefunden: https://github.com/less/less.js/blob/3.x/bin/lessc

dass sie js weniger Option auf diese Weise parsen:

        case 'js':
            options.javascriptEnabled = true;
            break;
        case 'no-js':
            console.error('The "--no-js" argument is deprecated, as inline JavaScript ' + 
                'is disabled by default. Use "--js" to enable inline JavaScript (not recommended).');
            break;

Daher sollten Sie wahrscheinlich '--js' in einer statischen Kompilierung (Befehlszeile) oder 'javascriptEnabled: true' in einer dynamischen Kompilierung (wie dem Webpack Loader) verwenden, um Javascript zu aktivieren.

28
Davide Carpini

Ja zu allem, was @ matthew-dean und @ davide-carpini gesagt haben ... aber für alle, die nach dem Code-Schnipsel von Grunt-LESS suchen, geht es hier:

  less: {
      dev: {
          options: {
              paths: ['Content/less'],
              plugins: [
                  new(require('less-plugin-autoprefix'))({
                      browsers: ['last 2 versions']
                  }),
                  new(require('less-plugin-clean-css'))({
                      sourceMap: true,
                      advanced: true
                  })
              ],
              relativeUrls: true,
              javascriptEnabled: true
          },
          files: {
              'Content/less/site.css': 'Content/less/site.less'
          }
      }
  },

dies funktioniert bei meiner Implementierung mit "grunt-contrib-less": "^2.0.0" ... Ihre Laufleistung kann variieren

1
rwcorbett

Inline-JavaScript wurde aus Sicherheitsgründen standardmäßig deaktiviert. Was passiert ist, ist, dass Online-Generatoren manchmal die Konfiguration von Weniger-Variablen zulassen, die sie dann direkt interpretieren.

Dies war anfällig für Code-Injection, was bedeutet, dass JavaScript in ein Less-Stylesheet eingefügt werden konnte, das direkt auf einem Server ausgeführt wurde.

Aus diesem Grund wurde Inline-JavaScript nicht mehr verwendet (standardmäßig in 3.x auf "false" gesetzt), und die Ersetzung hierfür ist die @plugin-Syntax und die Verwendung eines geeigneten JS-Plugins. - (Siehe: http://lesscss.org/features/#plugin-atrules-feature )

Ja, Sie können die Kompilierungsoptionen weiterhin auf javascriptEnabled: true setzen. Dies ist jedoch keine bewährte Methode für Stylesheets. Im Allgemeinen sollte Ihr Stylesheet kein JS enthalten. Es ist besser, ein Plugin zu verwenden.

1
Matthew Dean

Ich habe dieses Problem mit der neuesten Version von less bekommen. Dann bin ich auf Version 2.7 umgestiegen und hatte es behoben.

1
Anderson Sousa