0
我使用Gulp編譯/ uglify JavaScript,然後重新加載瀏覽器。 Gulp工作正常,但是當我在Chrome中運行JS時,我沒有得到任何錯誤,但是我的代碼仍然沒有工作。ES5不工作在鉻,使用Gulp
我在jsfiddle中試過,它工作正常。有沒有人有線索,可能會導致這個問題?
我什至嘗試關閉編譯並讓它作爲ES6運行。
這是我一飲而盡文件:
/**
*
* The packages we are using
*
**/
var gulp = require('gulp');
var sass = require('gulp-sass');
var browserSync = require('browser-sync');
var prefix = require('gulp-autoprefixer');
var uglify = require('gulp-uglify');
var babel = require('gulp-babel');
var connect = require('gulp-connect-php');
gulp.task('default',() => {
return gulp.src('js/*.js')
.pipe(babel({
presets: ['es2015']
}))
.pipe(gulp.dest('dist'));
});
/**
*
* Styles
* - Compile
* - Compress/Minify
* - Catch errors (gulp-plumber)
* - Autoprefixer
*
**/
gulp.task('sass', function() {
gulp.src('sass/**/*.scss')
.pipe(sass({outputStyle: 'compressed'}))
.pipe(prefix('last 2 versions', '> 1%', 'ie 8', 'Android 2', 'Firefox ESR'))
.pipe(gulp.dest('css'));
});
/**
*
* BrowserSync.io
* - Watch CSS, JS & HTML for changes
* - View project at: localhost:3000
*
**/
gulp.task('browser-sync', function() {
browserSync.init(['css/*.css', 'js/**/*.js', 'index.html'], {
server: {
baseDir: './'
}
});
});
/**
*
* Javascript
* - Uglify
*
**/
gulp.task('scripts', function() {
gulp.src('js/**/*.js')
.pipe(babel({presets: ['es2015']}))
.pipe(gulp.dest('js-min'))
});
// Connect php
gulp.task('connect-sync', function() {
connect.server({}, function(){
browserSync({
proxy: '127.0.0.1:8000'
});
});
});
/**
*
* Default task
* - Runs sass, browser-sync, scripts and image tasks
* - Watchs for file changes for images, scripts and sass/css
*
**/
gulp.task('live', ['sass', 'scripts', 'connect-sync'], function() {
gulp.watch('sass/**/*.scss', ['sass']);
gulp.watch('js/**/*.js', ['scripts']);
gulp.watch('php/**/*.php').on('change', function() {
browserSync.reload();
});
});
這裏是我的JS:
class ExpandArticle {
constructor() {
this.getButtonOpen = document.getElementsByClassName("col-left__button-open");
this.getButtonClose = document.getElementsByClassName("col-left__button-close");
this.addEventListeners = this.addEventListeners.bind(this);
this.expand = this.expand.bind(this);
this.close = this.close.bind(this);
if(this.getButtonOpen)
this.addEventListeners();
}
expand (event) {
let ID = event.target.id;
this.getButtonOpen[ID].className += " hide";
this.getButtonClose[ID].className = "col-left__button-close";
document.getElementById("expand" + ID).className = "expand";
document.getElementById("title" + ID).className = "move-up";
document.getElementById("img" + ID).className = "col-left__img-open";
}
close (event) {
let ID = event.target.id;
document.getElementById("expand" + ID).className = "hide";
document.getElementById("title" + ID).className = "";
document.getElementById("img" + ID).className = "col-left__img-close";
this.getButtonOpen[ID].className = "col-left__button-open";
this.getButtonClose[ID].className += " hide";
}
addEventListeners() {
let that = this;
[].forEach.call(this.getButtonOpen, function(element) {
element.addEventListener('click', that.expand);
});
[].forEach.call(this.getButtonClose, function(element) {
element.addEventListener('click', that.close);
});
}
}
new ExpandArticle();
但正如我所說的,它只是不會工作在Chrome中。
變得非常沮喪..
你可能會執行'新ExpandArticle'太不久。嘗試使用'window.onload = function(){new ExpandArticle()};' – trincot
這使得這個竅門,但它的奇怪,我認爲,當我使用事件監聽器時,該函數被調用的時間,不應該適用。 – Jousi