{"action":"created","issue":{"url":"https://api.github.com/repos/BrowserSync/grunt-browser-sync/issues/100","labels_url":"https://api.github.com/repos/BrowserSync/grunt-browser-sync/issues/100/labels{/name}","comments_url":"https://api.github.com/repos/BrowserSync/grunt-browser-sync/issues/100/comments","events_url":"https://api.github.com/repos/BrowserSync/grunt-browser-sync/issues/100/events","html_url":"https://github.com/BrowserSync/grunt-browser-sync/issues/100","id":60967596,"number":100,"title":"Scroll Sync not working between any browser","user":{"login":"jljorgenson18","id":5751354,"avatar_url":"https://avatars.githubusercontent.com/u/5751354?v=3","gravatar_id":"","url":"https://api.github.com/users/jljorgenson18","html_url":"https://github.com/jljorgenson18","followers_url":"https://api.github.com/users/jljorgenson18/followers","following_url":"https://api.github.com/users/jljorgenson18/following{/other_user}","gists_url":"https://api.github.com/users/jljorgenson18/gists{/gist_id}","starred_url":"https://api.github.com/users/jljorgenson18/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jljorgenson18/subscriptions","organizations_url":"https://api.github.com/users/jljorgenson18/orgs","repos_url":"https://api.github.com/users/jljorgenson18/repos","events_url":"https://api.github.com/users/jljorgenson18/events{/privacy}","received_events_url":"https://api.github.com/users/jljorgenson18/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-03-13T02:50:59Z","updated_at":"2015-05-11T09:03:33Z","closed_at":null,"body":"Hello,\r\nFirst off, Browser Sync is awesome.\r\n\r\nI just did a fresh install and everything seems to be working fine on my end except scroll. Here is my current config and other related configs.\r\n\r\nBrowser Sync\r\n```js\r\nbrowserSync: {\r\n            dev: {\r\n                bsFiles: {\r\n                    src: [\r\n                        'resources/css/dev/main.css',\r\n                        'devBuilds/index.html',\r\n                        'devBuilds/app.built.js'\r\n                    ]\r\n                },\r\n                options: {\r\n                    watchTask: true,\r\n                    proxy: \"localhost:9001\",\r\n                    open: false,\r\n                    ghostMode: {\r\n                        clicks: true,\r\n                        forms: true,\r\n                        scroll: true\r\n                    }\r\n                }\r\n            }\r\n        }\r\n```\r\nWatch Configs\r\n\r\n```js\r\nmodule.exports = {\r\n    appCommon: {\r\n        files: ['app/common/**/*.js'],\r\n        options: {\r\n            livereload: true\r\n        },\r\n        tasks: ['jsbeautifier:appCommon', 'jshint:appCommon']\r\n    },\r\n    appServer: {\r\n        files: ['server.js', 'app/server/**/*.js'],\r\n        tasks: ['jsbeautifier:appServer', 'jshint:appServer']\r\n    },\r\n    appUI: {\r\n        files: ['app/ui/**/*.js'],\r\n        options: {\r\n            livereload: true\r\n        },\r\n        tasks: ['jsbeautifier:appUI', 'jshint:appUI', 'browserify:dev']\r\n    },\r\n    appReact: {\r\n        files: ['app/ui/components/**/*.jsx'],\r\n        tasks: ['react']\r\n    },\r\n    sass: {\r\n        files: ['resources/**/*.scss'],\r\n        // options: {\r\n        //     livereload: true\r\n        // },\r\n        tasks: ['compass:dev', 'autoprefixer:dev']\r\n    },\r\n    testing: {\r\n        files: ['quality/testing/**/*.js'],\r\n        options: {\r\n            livereload: true\r\n        },\r\n        tasks: ['jsbeautifier:testing', 'jshint:testing']\r\n    },\r\n    grunt: {\r\n        files: ['Gruntfile.js', 'gruntConfigs/**/*.js'],\r\n        tasks: ['jsbeautifier:grunt', 'jshint:grunt']\r\n    }\r\n};\r\n```\r\n\r\nAnd the default grunt task that I'm running\r\n\r\n`grunt.registerTask('default', ['connect:devServer', 'browserSync', 'watch']);`\r\n\r\nThe proxy server that is referenced is simply a grunt connect server with some custom middleware. I've tried various options include turning off live-reload in many different areas, trying different variations with the ghostmode config, and running \"watch\" and browserSync\" in two different tasks. Nothing seems to be working.\r\n\r\nThanks!"},"comment":{"url":"https://api.github.com/repos/BrowserSync/grunt-browser-sync/issues/comments/100824250","html_url":"https://github.com/BrowserSync/grunt-browser-sync/issues/100#issuecomment-100824250","issue_url":"https://api.github.com/repos/BrowserSync/grunt-browser-sync/issues/100","id":100824250,"user":{"login":"VinnyFonseca","id":1447185,"avatar_url":"https://avatars.githubusercontent.com/u/1447185?v=3","gravatar_id":"","url":"https://api.github.com/users/VinnyFonseca","html_url":"https://github.com/VinnyFonseca","followers_url":"https://api.github.com/users/VinnyFonseca/followers","following_url":"https://api.github.com/users/VinnyFonseca/following{/other_user}","gists_url":"https://api.github.com/users/VinnyFonseca/gists{/gist_id}","starred_url":"https://api.github.com/users/VinnyFonseca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VinnyFonseca/subscriptions","organizations_url":"https://api.github.com/users/VinnyFonseca/orgs","repos_url":"https://api.github.com/users/VinnyFonseca/repos","events_url":"https://api.github.com/users/VinnyFonseca/events{/privacy}","received_events_url":"https://api.github.com/users/VinnyFonseca/received_events","type":"User","site_admin":false},"created_at":"2015-05-11T09:03:33Z","updated_at":"2015-05-11T09:03:33Z","body":"I have an amp stack so I turned the server off. The UI sends the reload command to all devices properly, but only a single device (a blackberry, of all things) syncs scroll, injection and url changes correctly. All other devices (ipad 3, iphone 4, nexus 7 and nexus 4) accept css injection, form input sync and page reload, but not url changing or scroll.\r\n\r\nHere is my grunt file:\r\n\r\n\t'use strict';\r\n\r\n\tmodule.exports = function(grunt) {\r\n\t\tgrunt.initConfig({\r\n\t\t\tpkg: grunt.file.readJSON('package.json'),\r\n\r\n\t\t\t// CONFIG ===================================/\r\n\r\n\t\t\t// Config for grunt-autoprefixer (avoid unnecessary mixin usage)\r\n\r\n\t\t\tautoprefixer: {\r\n\t\t\t\tdist: {\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tsafe: true,\r\n\t\t\t\t\t\tmap: true,\r\n\t\t\t\t\t\tbrowsers: ['last 3 versions', '> 1%', 'ie 8', 'ie 7']\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfiles: [{\r\n\t\t\t\t\t\texpand: true,\r\n\t\t\t\t\t\tcwd: 'styles',\r\n\t\t\t\t\t\tsrc: '{,*/}*.css',\r\n\t\t\t\t\t\tdest: 'styles',\r\n\t\t\t\t\t\text: '.css'\r\n\t\t\t\t\t}]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\r\n\t\t\t// Config for grunt-contrib-sass (no compass, ~6s compiling time)\r\n\r\n\t\t\tsass: {\r\n\t\t\t\tdist: {\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tstyle: 'compressed'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfiles: [{\r\n\t\t\t\t\t\texpand: true,\r\n\t\t\t\t\t\tcwd: 'styles',\r\n\t\t\t\t\t\tsrc: '{,*/}*.{scss,sass}',\r\n\t\t\t\t\t\tdest: 'styles',\r\n\t\t\t\t\t\text: '.css'\r\n\t\t\t\t\t}]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\r\n\t\t\t// Config for grunt-contrib-uglify (javascript concatenation)\r\n\r\n\t\t\tuglify: {\r\n\t\t\t\tdist: {\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tbeautify: false,\r\n\t\t\t\t\t\tsourceMap: true,\r\n\t\t\t\t\t\tsourceMapIncludeSources: true,\r\n\t\t\t\t\t\tsourceMapName: 'scripts/build.js.map'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfiles: {\r\n\t\t\t\t\t\t'scripts/build.js': [\r\n\t\t\t\t\t\t\t'scripts/core/vendor/jquery-1.11.2.js',\r\n\t\t\t\t\t\t\t'scripts/core/vendor/modernizr-latest.js',\r\n\t\t\t\t\t\t\t'scripts/core/vendor/device.js',\r\n\t\t\t\t\t\t\t'scripts/dev/config.js',\r\n\t\t\t\t\t\t\t'scripts/core/**/*.js',\r\n\t\t\t\t\t\t\t'scripts/dev/**/*.js'\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\r\n\t\t\t// Config for grunt-contrib-jshint (javascript lint)\r\n\r\n\t\t\tjshint: {\r\n\t\t\t\toptions: {\r\n\t\t\t\t\treporter: require('jshint-stylish'),\r\n\t\t\t\t\tforce: true,\r\n\t\t\t\t\tignores: ['scripts/build.js', 'scripts/core/vendor/**/*.js'],\r\n\t\t\t\t\t'-W001': false,\r\n\r\n\t\t\t\t\t// Enforcing\r\n\t\t\t\t\tnotypeof: true,\r\n\t\t\t\t\tfuncscope: true,\r\n\t\t\t\t\tunused: false,\r\n\t\t\t\t\tglobals: {\r\n\t\t\t\t\t\tbrowser: true,\r\n\t\t\t\t\t\tdevel: true,\r\n\t\t\t\t\t\tjQuery: true,\r\n\t\t\t\t\t\tconsole: true,\r\n\t\t\t\t\t\tdocument: true,\r\n\t\t\t\t\t\tmodule: true\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// Relaxing\r\n\t\t\t\t\tasi: true,\r\n\t\t\t\t\teqnull: true,\r\n\t\t\t\t\tloopfunc: true,\r\n\t\t\t\t\tmultistr: true\r\n\t\t\t\t},\r\n\t\t\t\tfiles: ['scripts/**/*.js']\r\n\t\t\t},\r\n\r\n\r\n\t\t\t// Config for grunt-browser-sync (browser synchronisation and auto-reloader)\r\n\r\n\t\t\tbrowserSync: {\r\n\t\t\t\tdist: {\r\n\t\t\t\t\tbsFiles: {\r\n\t\t\t\t\t\tsrc: [\r\n\t\t\t\t\t\t\t\"images/*.*\",\r\n\t\t\t\t\t\t\t\"styles/*.css\",\r\n\t\t\t\t\t\t\t\"scripts/*.js\",\r\n\t\t\t\t\t\t\t\"*.html\",\r\n\t\t\t\t\t\t\t\"*.php\",\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tminify: false,\r\n\t\t\t\t\t\tlogLevel: \"info\",\r\n\t\t\t\t\t\tlogConnections: true,\r\n\t\t\t\t\t\tlogFileChanges: true,\r\n\t\t\t\t\t\tghostMode: true,\r\n\t\t\t\t\t\twatchTask: true // < VERY important\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\r\n\t\t\t// Config for grunt-contrib-watch (overseer)\r\n\r\n\t\t\twatch: {\r\n\t\t\t\thtml: {\r\n\t\t\t\t\toptions: { livereload: true },\r\n\t\t\t\t\tfiles: ['**/*.html']\r\n\t\t\t\t},\r\n\t\t\t\tphp: {\r\n\t\t\t\t\toptions: { livereload: true },\r\n\t\t\t\t\tfiles: ['**/*.php']\r\n\t\t\t\t},\r\n\t\t\t\tcss: {\r\n\t\t\t\t\toptions: { livereload: true },\r\n\t\t\t\t\tfiles: ['**/*.css']\r\n\t\t\t\t},\r\n\t\t\t\tsass: {\r\n\t\t\t\t\toptions: { livereload: false },\r\n\t\t\t\t\tfiles: ['**/*.{scss,sass}'],\r\n\t\t\t\t\ttasks: ['sass', 'autoprefixer']\r\n\t\t\t\t},\r\n\t\t\t\tjs: {\r\n\t\t\t\t\toptions: { livereload: true },\r\n\t\t\t\t\tfiles: ['scripts/**/*.js', '!scripts/*.js'],\r\n\t\t\t\t\ttasks: ['uglify', 'jshint']\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\r\n\t\t\t// Config for grunt-contrib-imagemin (image compression)\r\n\r\n\t\t\timagemin: {\r\n\t\t\t\tdist: {\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\toptimizationLevel: 5\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfiles: [{\r\n\t\t\t\t\t\texpand: true,\r\n\t\t\t\t\t\tcwd: 'img',\r\n\t\t\t\t\t\tsrc: ['**/*.{png,jpg,gif}'],\r\n\t\t\t\t\t\tdest: 'img/min'\r\n\t\t\t\t\t}]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t// DEPENDENT PLUGINS =========================/\r\n\r\n\t\tgrunt.loadNpmTasks('grunt-autoprefixer');\r\n\t\tgrunt.loadNpmTasks('grunt-contrib-sass');\r\n\t\tgrunt.loadNpmTasks('grunt-contrib-uglify');\r\n\t\tgrunt.loadNpmTasks('grunt-contrib-jshint');\r\n\t\tgrunt.loadNpmTasks('grunt-contrib-watch');\r\n\t\tgrunt.loadNpmTasks('grunt-browser-sync');\r\n\t\tgrunt.loadNpmTasks('grunt-contrib-imagemin');\r\n\r\n\t\t// TASKS =====================================/\r\n\r\n\t\tgrunt.registerTask('default', ['browserSync', 'watch']);\r\n\t};"}}