I'm using the new InAppBrowser by Cordova 2.3.0.
There are some issues related to it.
First : When I click on the address bar to change the url, the keyboard isn't displayed [I run it on Android].
It only works when I click for a long time inside the textbox & choose select all , copy & paste ... then the keyboard is displayed [ & sometimes even when I do this it's not displayed].
Second: When I open a pdf file from the browser, it doesn't open ... Why ?
Thanks
The PDF issue can be fixed by setting the bridge mode to iframe
the cordova issue can be found here
Related
I'm using the ion-datetime component from Ionic 6 with ionic/angular.
The time-selector is opened, a pop-over is shown with two ion-picker-internal to select hour and minute. You can swipe up and down to select the desired value. If the currently selected value is tapped, the number keyboard is opened, which looks very awkward and confusing.
I know there is an issue in Ionic that the popover is not fully shown when at the edge of the screen. That happens when the keyboard is opened and makes the issue even worse.
See screenshot
My goal is to have the keyboard not opened in the first place.
This is the HTML snippet where the ion-datetime used in my application:
<ion-datetime name="startDate"
[(ngModel)]="inputActivity.startDate"
presentation="date-time"
required="true"
class="ion-no-padding"
slot="content"
></ion-datetime>
I've already studied the Ionic Datetime as well as keyboard related documentation. Setting inputmode="none" didn't help.
And here is a Plunkr to reproduce the issue (no Angular, just Ionic). Issue happens on iOS and Android. You might have to open the preview in a separate tab to be usable.
try this
<ion-item button="true" id="open-date">
<ion-icon name="calendar-outline" slot="start"></ion-icon>
<ion-label>{{inputActivity_startDate | date: 'dd/MM/yyyy H:mm' }}</ion-label>
<ion-popover trigger="open-date">
<ng-template>
<ion-datetime
required="true"
class="ion-no-padding"
presentation="time-date"
min="1950-01-01" max="2050-01-01"
[(ngModel)]="inputActivity_startDate"
displayFormat="D MMM YYYY H:mm"
show-default-buttons="true"
></ion-datetime>
</ng-template>
</ion-popover>
and change inputActivity.startDate to inputActivity_startDate in .ts file
I'm using Cordova 3.6.4 in Visual Studio 2013 Community Update 4 to build an apps with a "chat" functionality, the main reason that I use this technology is because I want to, hopefully, write once and can use it in all platforms such as Android phones, iPhones, all mobile phone browsers, all desktop browsers.
In order to let the users inputting the "message" to be sent, I create a [div] which is contenteditable="true" at the bottom left of the html, at the right hand side of this [div], I have two [image buttons], one is the [happy face] button, the other is the [send button]. (You know, just like Whatsapp, Line and WeChat!)
At any time the user can click the [happy face] button to select one of the many "face image" to insert into the cursor at the [div], then I'll add the html codes into the [div], e.g. div.innerHTML += '< img src="1.jpg">'
So, the innerHTML of this [div] can contain characters AND images, e.g.
12< img src="1.jpg" />34< img src="2.jpg" />
Of course, the actual display is:
12[1st Picture]34[2nd Picture]
If the cursor is at the end of this [div], and I clicked the [BACKSPACE], I expect the [2nd Picture] will be removed, if I clicked the [BACKSPACE] again, I expect the letter [4] will be removed from the [div], this is work at ALMOST every platform I mentioned including all mobile browsers in android and iphone/ipad, all desktop browsers. But it does not work when I build an Android app and run it in any Android phone.
Running it as a WebView in android phone, when I click the the [BACKSPACE], the letter [4] is removed instead of the [2nd Picture], when I click the [BACKSPACE] again, the letter[3] is removed. I can NEVER remove the 2 images no matter which IME I'm using.
To work around, I tried to add a keyup/keydown/keypress listener to the [BACKSPACE] but it never fires.
At last, to work around this [BUG], I need to add a third [X] image button and use JavaScript string.replace to remove the < img> tag when users click this [X] button, but it looks very stupid to the users!
It makes me crazy that ALL IMEs do not remove the image for me by pressing the [BACKSPACE], and if the key events are not fired, I cannot remove the images myself!
I tried ALMOST, I think, ALL the suggestions provided by stackoverflow but they don't work at all, either not applicable to CORDOVA, or with compilation error such as [command failed with exit code 8] in Visual Studio.
What should I do?
I need WebView to show a HTML page A, there are hyperlink tags in page A, which will open page B when clicked. On action bar of my Activity, I have a Button which will call WebView.reload() when clicked. This should be a very simple case of WebView.
PROBLEM:
When running my app on Andorid 4.0.3 or 4.0.4, after click hyperlink ( tags) in page A, Android WevView stays on page A, nothing happend.
What-I-tried:
1. when the problem occurrs, click reload button, WevView is displaying page B correctly.
2. modify source code of page A and B, remove CSS code which affect how tag displays. Then WebView can jump to page B correctly after click hyperlinks in page A.
I think this is a bug in Android 4.0.x, It is not possilbe to remove CSS in HTML, I am stuck with the "reload solution".
Does anyone know the root cause of this bug or a better soluton?
Thanks
Use WebChromeClient for webView fucntionality it should work.Even then you are unable to load the html than debug your code and use alternative which function is not working . because java script and CSS both works in web view only the case if you have made mistake in java script or css thnt it should do strange behavior(not loading/blank load/hang screen).
Issue solved by WORKAROUND in web page source, not Android WebView.
add the following javascript inside html body:
try{
document.documentElement.clientHeight
} catch (e) {
};
above js trys to read web window height, but it will force a refresh of web page.
That's how this js solved this issue.
I guess this should be a bug in Android 4.0.3/4.0.4. But currently you can use this workaround to avoid it, only if your WebView load web pages developed by you.
I'm working on a firefox for android addon, and there is a function that i need to be fired every time a new page (tab) is loaded: a new tab is opened or the address of the current tab changes. I tried to use listener ("load"/"tabSelect") but the first one didn't work and the second doesn't detect the address bar changes:
window.BrowserApp.deck.addEventListener("load", onPageLoad, true);
Should I add more than one listener? and I found this, but it doesn't work for firefox for android. Thank you for your help.
I don't know why "load" is not working for you. I do know that "load" is sometimes not called, when loading a page from back/forward session history for example. To work around that, you could try using the "pageshow" event. That will be called for any page-change.
For more info see: https://developer.mozilla.org/en-US/docs/Code_snippets/Mobile
I have an address search field in my app. When this field gets focus I want to open the keyboard as in the following image.
It works fine for iOS when the keyboard type is set to Titanium.UI.KEYBOARD_NUMBERS_PUNCTUATION as in the following code
var search = Titanium.UI.createSearchBar({
barColor:'#c8c8c8',
autocorrect:true,
hintText:'enter address',
height:'43dp',
top:'75dp',
autocapitalization: Titanium.UI.TEXT_AUTOCAPITALIZATION_WORDS,
keyboardType:Titanium.UI.KEYBOARD_NUMBERS_PUNCTUATION
});
However on Android it appears as in the following image.
I am using Titanium mobile SDK 1.7.5
You should probably add :
softKeyboardOnFocus : Titanium.UI.Android.SOFT_KEYBOARD_SHOW_ON_FOCUS
Unfortunately, it may be overridden by the system. Try it on another Android system (3.0 for example) if the problem persist.