I am currently working on a bookmarklet and have encountered something a little weird (and frustrating) with Android's Browser (seems to be device independent).
As you well know, when viewing a web page, as soon as you scroll down, the address bar in Browser hides. All well and good. However, it seems that if you invoke a bookmarklet, the address in the bar is replaced with a "javascript:" protocol address and the address bar won't auto-hide when you scroll.
No big deal, you'd think, but the content injected by my bookmarklet (which re-positions on scroll) is nicely covered by the address bar! I appreciate I could modify my code to just reposition slightly differently but there are reasons I'd like to avoid it at this stage.
Has anyone come across this particular issue before and are there are ways round it?
UPDATE: If it's worth anything, the "javascript:" protocol comment looks like a red herring. It seems to be because Browser thinks the page isn't loaded when my bookmarklet is invoked (little blue bar only goes a tenth of the way across and stops there). So, my question might be 'How do I accurately convince Browser than my page is loaded or kill the load?'
Related
I'm working on a Squarespace website (I can't post the link because of privacy reasons). I'm adding an announcement bar to the site, for covid info. It works fine almost everywhere, except on chrome in android. On that browser, when the page is first loaded, the very top of the text is cut off. Here's an image:
Image of bar cut off. (sorry it isn't a screenshot my phone won't take screenshots in incognito and it was in incognito for unrelated reasons).
Chrome won't allow me to scroll up anymore, which would correct the issue. When I reload the page, it starts off looking the same. However, I now I do have the ability to scroll up.
I've attempted a couple of solutions. Firstly, I've tried to set the z index of the bar higher. But that didn't help. I've also tried to add a script which automatically scrolls the user to the top using window.scrollTo(0, 0); but that also failed.
Sorry I can't show code, it's a Squarespace site. I hope someone can help. Thanks.
Edit: I've done some checking and it happens on computer chrome too when I make the screen small enough, but NOT when I switch "devices" in inspect element. However, the problem isn't there on iphone. Chrome on iphone uses webkit, while on other devices it uses Blink, so I think Blink may be the source of the issue
On OSX using Android Studio 1.5.1, I'm getting "changed lines" popups that cover the scrollbar on the right and prevent me from scrolling. They're pervasive and require extra attention to get the right combination of clicks and mouse movement to regain control of the scroll bar from this hijacking.
How do I stop this popup? It isn't useful at all for me.
The popup covers the scrollbar for other things too, like TODOs.
It appears that two messages combine into a correct popup to the left, that doesn't cover the scrollbar. So... whatever is responsible for this popup knows how to do things correctly, but chooses not to in some cases.
These two images are at the far right, the scrollbar.
This blocks clicks and makes it difficult to scroll.
This is more reasonable, but still unnecessary for my needs.
I did find a thread on this subject, but I do not want to turn syntax highlighting off. Also, it appears that for some configurations these popups are click-through so they don't interfere with functionality. No so for me, unfortunately.
Intellij Idea 14 - disable highlighting level messages
I tried disabling plugins, but the functionality appears to be in the core (or the core set of plugins for Android Studio).
Has anyone else seen this? Is there a preference that can just disable these change line popups?
All!
I have a perplexing problem that occurs only on some specific phones-- but they're the phones that my customer wants the app written for, so I need to deliver. :-/ The site that I am working on consists of fourteen jQuery mobile "pages", and two of them are exhibiting the following behavior:
I have an issue where pages being loaded from the browser's cache-- whether by pressing the browser's "back button" or simply reloading a page that has been previously rendered-- is broken:
While the page renders correctly, the bottom of the page is either "cut off" and can't be scrolled to, or a medium amount of "new" blank content is inserted at the bottom of the page.
When the latter occurs, the UI controls are "shifted" by the length of the new blank content compared to where the user was tapping: If an inch was "inserted" when the page is displayed for the second time, tapping on the screen triggers a click event in the location an inch "higher" on the page than where my finger touched the screen.
I will note that this problem appears to occur only on pages that have enough content to scroll off screen; pages that have small amounts of content do not suffer this problem. There is no dynamic content being added to these pages.
It appears that once a page is created and then a different page is displayed, something breaks in the DOM when the previously-created page is redisplayed.
The mobile sites run perfectly in Chrome and Firefox on a PC; they manifest themselves only on certain Android phones. One phone model that is giving me particular headaches is a Samsung SGH-I437P running Android 4.1.2.
I'm using the latest versions of jQuery-- rev 1.9.1 of jQuery, and 1.3.2 of jQuery mobile.
What I think I need to do is to tell jQuery to completely rebuild the page, but am unsure if this is even feasible, as the since the page has already been loaded into the DOM with all the jQuery mobile "embellishments"-- so there's no "bare-bones non-jQuery-mobile" HTML to rebuild the page with.
However, searching for page rebuilding / reloading hasn't turned up any concrete hits-- there was a way to do this with older versions of jQuery Mobile, but this does not work for the latest version.
Has anyone else experienced this behavior and know how to counteract it? My team of two have been focused on this for weeks to no avail.
I'm building an html5 wrapped iOS / Android app with Trigger.io.
I have a problem on Android with a grey background appearing on the screen in some occasions after the virtual keyboard has closed, or after the phone has changed orientation.
Example screenshots are shown below.
The grey background is after the end of my app's page. Sometimes it is visible for a split second, other times it stays visible until you make an action such as scroll the page, bring the keyboard back, change orientation.
It's pretty jarring to look at.
I'd ideally like to stop the issue occurring, but as a temporary fix I'd be happy with being able to set the grey to my own background colour to make it less noticeable.
This looks like the HTML's not being re-drawn when the keyboard disappears... does it clear up if you do something to trigger a render?
Are you using a framework to handle the UI here? Something that might be trying to do something clever based on the visible viewport?
From what I can tell, the root of the issue is in the webview not re-drawing correctly, or something in your JavaScript failing to respond to the viewport changing size.
You could try running the app on the "web" target (instead of Android) then opening it in your phone's browser: if you can get far enough into the app to create the same effect it would help isolate the problem to the webview rendering or your JS.
I had a very similar issue in my project, in my case on Android 2.3.5 but not on Android 4.*. The cause in my case was not setting a window soft input mode for the associated activity in the manifest:
android:windowSoftInputMode="adjustPan"
Instead, the window was resizing when the keyboard appeared but apparently not resizing once more when the keyboard disappeared.
More details can be found here.
I almost went crazy with the same issue. I finally found out that this largely depends on the device you are using. I had a similar problem : Fixed elements (HTML) break after android keyboard dissapears?
And I am also using trigger.io. This doesn't happen with some devices. Could be the particular OS in android or could just be the way the specific device handles the memory latency.
I have looked for this but I go with #jamesbrady in that the HTML doesn't redraw. The problem in trigger is that you cannot edit the
android:windowSoftInputMode="adjustPan"
because the activity tag in the AndroidManifest.xml updates on each run. You would need to build a private module for that.
I know there is a similar question here: Moving mouse pointer on Android screen programatically but it doesn't seem to answer my needs (particularly because the answer was "not possible"!)
My client has an Android phone which is connected via some sort of bluetooth dongle to a wireless keyboard/trackpad. This is all working fine and I have written some software to react to keypresses. The problem is that the client is NOT interested in seeing a mouse cursor on the screen (this particular keyboard will have all except a few buttons covered up and will function as a remote control, the trackpad is inaccessible so the pointer sits in the middle of the screen uselessly).
So - is there any way for my app to get rid of the visible mouse pointer (either just for itself or for all cases, I don't care - this app is the only thing they want running on the phone). If I can't hide it can I move it to a corner, or can I change it to look like a plain white box instead of an arrow, or something else?
Any ideas would be greatly appreciated
Thanks
So - is there any way for my app to get rid of the visible mouse pointer (either just for itself or for all cases, I don't care - this app is the only thing they want running on the phone). If I can't hide it can I move it to a corner, or can I change it to look like a plain white box instead of an arrow, or something else?
All of this may be possible with custom firmware. None of this is possible via the Android SDK.
You may be better served simply by replacing the "wireless keyboard/trackpad" with one that does not have a trackpad.