Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Increase the hit area for controls on mobile devices #396

Open
jrw95 opened this issue Mar 21, 2013 · 14 comments
Open

Increase the hit area for controls on mobile devices #396

jrw95 opened this issue Mar 21, 2013 · 14 comments
Labels
confirmed enhancement pinned Things that stalebot shouldn't close automatically unclaimed
Milestone

Comments

@jrw95
Copy link
Contributor

jrw95 commented Mar 21, 2013

Found during exploratory testing on iOS and Android mobile devices.

STR:

  1. Load the video.js demo page on an iOS or Android device. This bug is most noticeable on smaller-screen Androids and iPhones.
  2. Tap the bigPlayButton to start playback.
  3. Tap in the timeline to seek forward or backward.
  4. Try to drag the scrubber forward or backward to seek. (There is a pull request to support this behavior.)
  5. Tap the full-screen button.

Expected:
Touch events to start and pause playback, to seek, and to use the full-screen and volume controls succeed.

Actual:
Because the hit areas for these controls are so small, the touch events usually don't happen, or don't work as expected.

@heff
Copy link
Member

heff commented Feb 26, 2014

@BCjwhisenant @gkatsev, I assume this is fixed in the BC player with mobile specific controls?

We need to find a good solution for the main lib skin as well. Previously we talked about detecting touch usage (any touch event triggered) and applying a style that bumps the default font size. That could be relatively easy.

@jrw95
Copy link
Contributor Author

jrw95 commented Feb 26, 2014

I'll talk to our intern tomorrow about testing this.

@gkatsev
Copy link
Member

gkatsev commented Feb 26, 2014

Yep, this shouldn't be a problem for the BC player.
We probably should adopt a similar strategy to what the BC player does. It detects whether it is a touch-enabled device and adds a class to the container which then enables the different styles.

@jrw95
Copy link
Contributor Author

jrw95 commented Feb 26, 2014

@paruls, can you take a look at this?

@paruls
Copy link

paruls commented Feb 26, 2014

scrubbing and tap seeking both work relatively well. The only time I found it difficult is when the magnification came up -which wasn't interactive (I don't know if it's supposed to be) on Android. Or when a tap into the player would just select the entire player instead of pulling up the progress bar and all the options.

@mmcc
Copy link
Member

mmcc commented Mar 5, 2014

@paruls Just to confirm on this one, are you testing the BC player or Video.js?

@paruls
Copy link

paruls commented Mar 5, 2014

@mmcc the video.js player

@mmcc
Copy link
Member

mmcc commented Mar 5, 2014

Excellent. Closing this one then.

@mmcc mmcc closed this as completed Mar 5, 2014
@heff
Copy link
Member

heff commented Mar 31, 2014

I think we still want this on open actually. We haven't done anything to adjust the size of the controls when touch is enabled yet.

@heff heff reopened this Mar 31, 2014
@mmcc mmcc added this to the v5.0.0 milestone Jan 16, 2015
@dmlap
Copy link
Member

dmlap commented Apr 27, 2015

Decided to add a state to the player that listens for mouse or touch events and updates a class on the player. When we know it's touch, we double the font size.

@bc-bbay
Copy link
Contributor

bc-bbay commented Apr 30, 2015

On it

@heff
Copy link
Member

heff commented May 11, 2015

@bc-bbay get anywhere with this?

@heff
Copy link
Member

heff commented May 30, 2015

Moving this to 5.1 as it's something that needs more research and probably isn't API breaking.

@heff heff modified the milestones: v5.1.0, v5.0.0 May 30, 2015
@gkatsev gkatsev added the pinned Things that stalebot shouldn't close automatically label Jul 2, 2018
@UIX-Design
Copy link

UIX-Design commented May 7, 2019

@gkatsev I found out this here:

const player = videojs(video, {
    controls: true,
    controlBar: {
        volumePanel: {
            inline: false,
        }
    }
});

if (window.mobileAndTabletcheck()) {
        player.ready(function () {
            player.usingNativeControls = true;
            player.src({ type: 'video/mp4', src: '/assets/videos/video.mp4' });
            player.requestFullscreen();
            player.play();
        })
}

window.mobileAndTabletcheck = function () {
    var check = false;
    (function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera);
    return check;
};

Result:

Bildschirmfoto 2019-05-07 um 18 21 00

Why nativeControls doesn't work on this way on tablet devices like iPad Pro?

const player = videojs(video, {
    controls: true,
    nativeControlsForTouch: true,
    controlBar: {
        volumePanel: {
            inline: false,
        }
    }
});

if (window.mobileAndTabletcheck()) {
        player.ready(function () {
            player.src({ type: 'video/mp4', src: '/assets/videos/video.mp4' });
            player.requestFullscreen();
            player.play();
        })
}

Result:

Bildschirmfoto 2019-05-07 um 18 26 52

After closed an opened fullscreen again:

Bildschirmfoto 2019-05-07 um 18 30 15

Why is this happening?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
confirmed enhancement pinned Things that stalebot shouldn't close automatically unclaimed
Projects
None yet
Development

No branches or pull requests

8 participants