Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 5

0
votes
answers
40 views
+10

使用科爾多瓦防止android編輯欄

1

我正在Cordova/PhoneGap上開發電子書應用程序,我希望能夠從某些部分中選擇文本,但不能從其他部分選擇文本。科爾多瓦有這個CSS開箱避免選擇:使用科爾多瓦防止android編輯欄

-webkit-touch-callout: none; /* prevent callout to copy image, etc when tap to hold */ 
-webkit-text-size-adjust: none; /* prevent webkit from resizing text to fit */ 
-webkit-user-select: none;  /* prevent copy paste, to allow, change 'none' to 'text' */ 

我允許選擇由#content部分的user-select價值重新定義到text,例如像:

#content { 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
    padding: 1em; 
    box-sizing: border-box; 
    outline: none; 
    user-select: text !important; 
    -webkit-user-select: text !important; 
} 

這工作正常,我可以選擇文本,但它有一個問題:從android顯示默認編輯欄(在下面的屏幕截圖中爲淺藍色),我想避免這種情況,因爲我將擁有自己的控制器進行復制/共享。我能做些什麼來避免它出現?

android edit bar displayed on screenshot

我寧願科爾多瓦/ PhoneGap的解決方案,但如果唯一的辦法就是使用Java和修改由科爾多瓦生成的Java代碼,我會開它。

沙发
0
1

假設您正在使用不應觸發默認編輯欄的DIV元素。

這些是我所採取的步驟:

  1. #content的CSS類刪除user-select-webkit-user-select,因爲這會允許打開默認編輯吧。

  2. 添加contenteditable-歸因於#content,以便可以選擇單個單詞。雖然#content也已得到user-select: none a selectstart - 當用戶想要選擇此元素時觸發事件。這可以在selectstart-處理程序中使用,以打開您自己的彈出窗口而不是默認編輯欄。

請注意:以下示例顯示瞭如何在#content中選擇某個元素。因此,在這個例子中,用戶(也)能夠選擇段落內的某些單詞,而不僅僅是整個段落,但是你必須使用SPAN -element來包裝它們,例如僅高亮它們。

這應與所有平臺上工作:

<style> 

    div { 
    touch-callout: none; 
    text-size-adjust: none; 
    user-select: none; 
    -webkit-touch-callout: none; 
    -webkit-text-size-adjust: none; 
    -webkit-user-select: none; 
    border: 1px solid red; 
    padding: 1em; 
    height: 50px; 
    } 

    #content { 
    margin-top: 50px; 
    height: 100px; 
    padding: 1em; 
    box-sizing: border-box; 
    border: 1px solid blue; 
    } 

</style> 
<body> 

<div> 
    This text can not be selected at all 
</div> 

<div id="content" contenteditable="true"> 
    This text can be <span>selected</span> but not by using default editor 
    This text can be <span>selected</span> but not by using default editor 
    This text can be <span>selected</span> but not by using default editor 
</div> 

</body> 

JS:

var selected = false; 
var isHolding = false; 
document.getElementById('content').addEventListener('selectstart', function(event) { 
    // preventDefault prevents to open the default-editor 
    event.preventDefault(); 

    // prevents to fire selectstart-event several times 
    if(selected)return; 
    selected = true; 

    // simulate delay like a real selection event by using setTimeout 
    setTimeout(function(){ 

    // is user still holding onto screen, then select text 
    // otherwise nothing is highlighted 
    if(isHolding) { 
     // event.target contains the element that is selected 
     // it can be a SPAN- or the whole #content-element 
     var selectedElement = event.target.parentNode; 
     console.log(selectedElement); 
     highlightTextNode(selectedElement); 

     var selectedText = selectedElement.textContent ? selectedElement.textContent : selectedElement.innerText; 
     alert("this text is selected: "+ selectedText); 

     // HERE! You might want to open a popup here to show/process this selected text 

    } 

    // reset selected 
    selected = false; 

    },1000); 

},false); 


// check for a user really touched #content to know whether a text should be highlighted or not 
document.getElementById('content').addEventListener('touchstart',function(event) { 
    isHolding = true; 
},false); 


// check for a user really left #content to know whether a text should be highlighted or not 
document.getElementById('content').addEventListener('touchend',function(event) { 
    isHolding = false; 
},false); 


// just a function to highlight any HTML-Node 
function highlightTextNode(node){ 
    if(node)node.setAttribute('style','color: yellow'); 
} 

希望這有助於。

+0

這沒有與我的代碼工作(雖然它自己工作),我需要嘗試適應它,因爲它仍然不是我正在尋找(這個解決方案整個塊將被選中,而不是特定的文字) –

+0

我很遺憾聽到,但正如我在回答中所述,必須使用某些HTML實體(如SPAN),以便選詞是可能的。儘管如此,在我的回答中,您可以單獨標記「已選」字,因爲它們被SPAN包裝 – Blauharley

0
votes
answers
58 views
+10

科爾多瓦條碼掃描器不能在Android 6.0.1上工作

0

我在設置Ionic 3.19上的BarcodeScanner時遇到了一些問題。這是我的代碼到目前爲止。測試設備是運行Android 6.0.1的LG Nexus 5。我正在運行科爾多瓦7.0.1。科爾多瓦條碼掃描器不能在Android 6.0.1上工作

以下實現在瀏覽器中按預期工作,但在手機上,它只是告訴我「授予權限」,然後條形碼掃描器的攝像頭不出現。

存款money.ts

import { Component } from '@angular/core'; 
import { ModalController } from 'ionic-angular'; 
import { BarcodeScanner, BarcodeScannerOptions } from '@ionic-native/barcode-scanner'; 
import { AndroidPermissions } from '@ionic-native/android-permissions'; 

import { ScanQRCodeModal } from '../scan-qr-code/scan-qr-code'; 

@Component({ 
    selector: 'page-deposit', 
    templateUrl: 'deposit-money.html' 
}) 
export class DepositMoneyPage { 

    options: BarcodeScannerOptions; 
    scanData: {}; 

    constructor(private barcodeScanner: BarcodeScanner, 
       private androidPermissions: AndroidPermissions, 
       private modalCtrl: ModalController) { 

    } 

    checkCameraPermissions() { 
    this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
     success => { alert('Permission granted'); this.scanQRCode()}, 
     err => { alert('asking for permisison'); this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA) } 
    ); 
    } 

    scanQRCode() { 
    this.options = { 
     prompt : "Scan your voucher code" 
    } 
    this.barcodeScanner.scan(this.options).then((barcodeData) => { 
     console.log(barcodeData); 
     this.scanData = barcodeData; 
    }, (err) => { 
     console.log("Error occured: " + err); 
    }); 
    } 

    showScanQRCodeModal() { 
    let scanQRCodeModal = this.modalCtrl.create(ScanQRCodeModal); 
    scanQRCodeModal.present(); 
    } 
} 

存款money.html

<ion-header> 
    <ion-navbar> 
     <ion-title> 
      Deposit Money 
     </ion-title> 
    </ion-navbar> 
</ion-header> 

<ion-content> 
    <ion-list> 
     <button ion-item (click)="checkCameraPermissions()">Scan QR Code</button> 
    </ion-list> 

    <div *ngIf="scanData"> 
     <p>Scanned Text: {{scanData.text}}</p> 
     <p>Scanned Format: {{scanData.format}}</p> 
    </div> 
</ion-content> 
沙发
0
0

嘗試使用這個插件

<plugin spec="https://github.com/Telerik-Verified-Plugins/BarcodeScanner.git" source="git" > 
    <param name="CAMERA_USAGE_DESCRIPTION" value="To scan barcodes." /> 
    </plugin> 
0
votes
answers
46 views
+10

沒有任何插件可以在Cordova/PhoneGap Android混合移動應用程序中加載。怎麼解決?

2

我按照這裏的指示點。 (https://documentation.onesignal.com/v3.0/docs/phonegap-sdk-setup沒有任何插件可以在Cordova/PhoneGap Android混合移動應用程序中加載。怎麼解決?

我的目標是將推送通知從服務器(Firebase或OneSignal)發送到我在Android設備上進行測試的Chrome瀏覽器或PhoneGap測試應用程序。

我已將下面的代碼添加到我的onDeviceReady函數中並且它運行;

console.log("OneSignal is here!"); 
var notificationOpenedCallback = function(jsonData) { 
    console.log('notificationOpenedCallback: ' + JSON.stringify(jsonData)); 
    alert("Received my notification"); 
}; 

// c02be63f-e777-4b99-8775-dec62efxxxxx is my APP ID 
window.plugins.OneSignal 
    .startInit("c02be63f-e777-4b99-8775-dec62efxxxxx") 
    .handleNotificationOpened(notificationOpenedCallback) 
    .endInit(); 

window.plugins.OneSignal.setSubscription (true); 

window.plugins.OneSignal.enableNotificationWhenActive(true); 

但是,運行後,我得到以下錯誤。有人可以解釋這個錯誤的含義嗎?

Error: exec proxy not found for :: StatusBar :: _ready 
(index):365 OneSignal is here! 
(index):365 Error: exec proxy not found for :: OneSignalPush :: setNotificationReceivedHandler 
(index):365 Error: exec proxy not found for :: OneSignalPush :: setNotificationOpenedHandler 
(index):365 Error: exec proxy not found for :: OneSignalPush :: init 
(index):365 Error: exec proxy not found for :: OneSignalPush :: setSubscription 

我注意到我試過的每個其他新插件都有同樣的錯誤。這意味着有些事情是錯的。

這是我??3210

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.upen.testing" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0"> 
    <name>Testing</name> 
    <description> 
     A blank PhoneGap app. 
    </description> 
    <author email="[email protected]" href="http://phonegap.com"> 
     PhoneGap Team 
    </author> 
    <content src="index.html" /> 
    <access origin="*" /> 
    <gap:plugin name="onesignal-cordova-plugin" source="npm" spec="^2.2.4" /> 
    <preference name="phonegap-version" value="cli-7.1.1" /> 
    <preference name="android-build-tool" value="gradle" /> 
    <preference name="android-minSdkVersion" value="15" /> 
    <engine name="browser" spec="~5.0.1" /> 
    <plugin name="cordova-plugin-whitelist" spec="~1.3.3" /> 
    <plugin name="onesignal-cordova-plugin" spec="~2.2.4" /> 
    <plugin name="cordova-plugin-statusbar" spec="~2.3.0" /> 
    <plugin name="cordova-plugin-fcm" spec="^2.1.2" /> 
    <engine name="android" spec="~6.3.0" /> 
</widget> 
+0

看到我的[回覆](https://stackoverflow.com/questions/39066959/check-internet-connection-in-android-webview-cordova/39211383#39211383)快速指南科爾多瓦安裝。 –

+0

我已經安裝了Cordova/PhoneGap/Node.js - 一切正常。除了在測試項目中加載的插件得到這個exec ...錯誤。 – Zac

+0

我認爲問題出在。嘗試下載並使用

沙发
0
2

這是關鍵

其中我對Chrome瀏覽器或PhoneGap的測試應用程序測試。

如果您在Chrome測試,如果你對PhoneGap的測試程序測試科爾多瓦插件沒有在那裏工作

,在PhoneGap的開發應用是一個應用程序科爾多瓦,並已建有一些科爾多瓦插件,但它不包含onesignal插件,所以當你在那裏測試時你不能使用插件。

所以,你所要做的就是編譯並直接在您的手機上運行你的應用程序(不包括Chrome或PhoneGap的應用程序)

我不使用PhoneGap的,所以我不知道確切的命令你需要。您可以嘗試

phonegap run android --device

phonegap cordova run android --device

cordova run android --device(這可能需要安裝科爾多瓦CLI npm install -g cordova

您將需要安裝Android SDK使先前的命令工作。

板凳
0
0

嘿你的代碼看起來很好,這只是配置問題。

嘗試用下面的命令

phonegap plugin update onesignal-cordova-plugin 

的SDK後的幫助更新onesignal-SDK是更新完成

phonegap platform rm android 

現在添加Android平臺再次

phonegap platform add android 

現在,當您添加推送插件時,它不會在瀏覽器上或通過執行phonegap serve命令工作。你需要在真正的Android設備上運行它。

phonegap run android 

此命令與構建和安裝apk到您的設備上。

現在你可以檢查登錄logcat。問題不再存在。

乾杯:) 希望這會有所幫助。

0
votes
answers
39 views
+10

解決Google Play商店崩潰

0

我使用Phonegap平臺開發了我的Android應用程序並部署到Google Play商店。它工作正常,但很少有崩潰轉播解決Google Play商店崩潰

Crash report - Screenshot

有什麼辦法來解決這個問題?謝謝。

沙发
0
1

這是運行時崩潰的概要,所以請更新您的代碼,並重新測試它已崩潰的特定設備並上傳新的apk。這是唯一的解決方案。

+0

好的,謝謝! – Mohanraj

+0

最受歡迎! –

0
votes
answers
38 views
+10

Jquery移動多頁問題

我正在使用jquery mobile進行開發,而對於一個新項目,我決定使用多個文件。 index.html locations.html rewards.html 我正在成功鏈接這些頁面。 index -> locations -> rewards 我可以在我的locations.html頁面加載時動態加載數據,但在點擊locations.html頁面上的鏈接後將動態內容加載到我的rewards.html頁面時出現問題。 ajax調用工作正常,我可以通過控制台看到內容加載,但內容不會加載到頁面上。 我在locations.html頁面上成功使用了jquery移動列表視圖,無法在rewards.html頁面上加載listview。 希望這有道理..
沙发
0

The problem with multiple HTML-files in a cordova app is, that every new file has to be managed like your index.html.

That means, that you have to include the cordova.js, your jQuery mobile JS, your app.js, … in every file and of course, you have to wait again for the cordova- and jQuery-deviceready-event.

That is the reason, why single-page-app are much simpler to manage.

我實際上並沒有添加完整的HTML標記,只是添加了 等等。它加載很好,我已經得到了動態內容加載。我的新問題是頁面上的Web表單。我不能再使用$()。submit()e.preventDefault()。但是,如果我將表單添加到主index.html文件中,它可以很好地工作。我希望我可以簡單地在外部profile.html頁面中使用它,只是為了保持我的代碼乾淨。任何想法... - Fabian Glace 17年7月26日在12:02 20191106091445根據我的觀點,你必須使用像php這樣的服務器腳本語言,將本地存儲數據或sqlite數據推送到mysql db。 - Kapur '17年10月14日11:11 20191106091451您是否檢查了GCC為您的C ++程序生成的彙編代碼? - ruakh 2016年11月1日6:14 20191106091452使用-S編譯以獲取編譯器生成的程序集。編譯器足夠聰明,可以意識到模數同時進行除法。 - user3386109 2016年11月1日6:15 20191106091453我認為您的選擇是1.您的測量技術存在缺陷,2。編譯器會編寫更好的程序集,或者3.編譯器使用魔法。 - Galik 11年1月1日6:16 20191106091454使用C代碼生成asm +編織間的編號並比較註釋。 - legends2k 2016年11月1日6:23 20191106091455@jefferson編譯器可以使用更快的強力。例如,可能有SSE指令。 - immibis 2016年11月1日6:25 20191106092451我前段時間嘗試過矢量化方法,它沒有幫助(因為你可以用tzcnt在標量代碼中做得更好,並且在向量化的情況下你被鎖定到矢量元素中運行時間最長的序列) 。 - EOF 2016年11月1日8:57 function isChinese(str) { if (escape(str).indexOf( "%u" )<0) { return false; } else { return true; } } function show() { //alert(excerpt); var excerpt20191106071423 = ''; excerpt20191106071423 = $('#excerpt20191106071423').text(); if ($('.translated-ltr') && isChinese(excerpt20191106071423) ) { $.post('save3.php?id=20191106071423', { id: '20191106071423', excerpt: $('#excerpt20191106071423').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081415 = ''; excerpt20191106081415 = $('#excerpt20191106081415').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081415) ) { $.post('save3.php?id=20191106081415', { id: '20191106081415', excerpt: $('#excerpt20191106081415').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081421 = ''; excerpt20191106081421 = $('#excerpt20191106081421').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081421) ) { $.post('save3.php?id=20191106081421', { id: '20191106081421', excerpt: $('#excerpt20191106081421').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081422 = ''; excerpt20191106081422 = $('#excerpt20191106081422').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081422) ) { $.post('save3.php?id=20191106081422', { id: '20191106081422', excerpt: $('#excerpt20191106081422').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081426 = ''; excerpt20191106081426 = $('#excerpt20191106081426').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081426) ) { $.post('save3.php?id=20191106081426', { id: '20191106081426', excerpt: $('#excerpt20191106081426').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081427 = ''; excerpt20191106081427 = $('#excerpt20191106081427').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081427) ) { $.post('save3.php?id=20191106081427', { id: '20191106081427', excerpt: $('#excerpt20191106081427').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106082431 = ''; excerpt20191106082431 = $('#excerpt20191106082431').text(); if ($('.translated-ltr') && isChinese(excerpt20191106082431) ) { $.post('save3.php?id=20191106082431', { id: '20191106082431', excerpt: $('#excerpt20191106082431').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106082432 = ''; excerpt20191106082432 = $('#excerpt20191106082432').text(); if ($('.translated-ltr') && isChinese(excerpt20191106082432) ) { $.post('save3.php?id=20191106082432', { id: '20191106082432', excerpt: $('#excerpt20191106082432').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106082433 = ''; excerpt20191106082433 = $('#excerpt20191106082433').text(); if ($('.translated-ltr') && isChinese(excerpt20191106082433) ) { $.post('save3.php?id=20191106082433', { id: '20191106082433', excerpt: $('#excerpt20191106082433').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081437 = ''; excerpt20191106081437 = $('#excerpt20191106081437').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081437) ) { $.post('save3.php?id=20191106081437', { id: '20191106081437', excerpt: $('#excerpt20191106081437').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081438 = ''; excerpt20191106081438 = $('#excerpt20191106081438').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081438) ) { $.post('save3.php?id=20191106081438', { id: '20191106081438', excerpt: $('#excerpt20191106081438').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081449 = ''; excerpt20191106081449 = $('#excerpt20191106081449').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081449) ) { $.post('save3.php?id=20191106081449', { id: '20191106081449', excerpt: $('#excerpt20191106081449').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081450 = ''; excerpt20191106081450 = $('#excerpt20191106081450').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081450) ) { $.post('save3.php?id=20191106081450', { id: '20191106081450', excerpt: $('#excerpt20191106081450').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081451 = ''; excerpt20191106081451 = $('#excerpt20191106081451').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081451) ) { $.post('save3.php?id=20191106081451', { id: '20191106081451', excerpt: $('#excerpt20191106081451').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081452 = ''; excerpt20191106081452 = $('#excerpt20191106081452').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081452) ) { $.post('save3.php?id=20191106081452', { id: '20191106081452', excerpt: $('#excerpt20191106081452').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081454 = ''; excerpt20191106081454 = $('#excerpt20191106081454').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081454) ) { $.post('save3.php?id=20191106081454', { id: '20191106081454', excerpt: $('#excerpt20191106081454').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106081455 = ''; excerpt20191106081455 = $('#excerpt20191106081455').text(); if ($('.translated-ltr') && isChinese(excerpt20191106081455) ) { $.post('save3.php?id=20191106081455', { id: '20191106081455', excerpt: $('#excerpt20191106081455').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106092405 = ''; excerpt20191106092405 = $('#excerpt20191106092405').text(); if ($('.translated-ltr') && isChinese(excerpt20191106092405) ) { $.post('save3.php?id=20191106092405', { id: '20191106092405', excerpt: $('#excerpt20191106092405').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106092406 = ''; excerpt20191106092406 = $('#excerpt20191106092406').text(); if ($('.translated-ltr') && isChinese(excerpt20191106092406) ) { $.post('save3.php?id=20191106092406', { id: '20191106092406', excerpt: $('#excerpt20191106092406').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106092407 = ''; excerpt20191106092407 = $('#excerpt20191106092407').text(); if ($('.translated-ltr') && isChinese(excerpt20191106092407) ) { $.post('save3.php?id=20191106092407', { id: '20191106092407', excerpt: $('#excerpt20191106092407').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106091411 = ''; excerpt20191106091411 = $('#excerpt20191106091411').text(); if ($('.translated-ltr') && isChinese(excerpt20191106091411) ) { $.post('save3.php?id=20191106091411', { id: '20191106091411', excerpt: $('#excerpt20191106091411').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106091428 = ''; excerpt20191106091428 = $('#excerpt20191106091428').text(); if ($('.translated-ltr') && isChinese(excerpt20191106091428) ) { $.post('save3.php?id=20191106091428', { id: '20191106091428', excerpt: $('#excerpt20191106091428').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106092439 = ''; excerpt20191106092439 = $('#excerpt20191106092439').text(); if ($('.translated-ltr') && isChinese(excerpt20191106092439) ) { $.post('save3.php?id=20191106092439', { id: '20191106092439', excerpt: $('#excerpt20191106092439').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106091445 = ''; excerpt20191106091445 = $('#excerpt20191106091445').text(); if ($('.translated-ltr') && isChinese(excerpt20191106091445) ) { $.post('save3.php?id=20191106091445', { id: '20191106091445', excerpt: $('#excerpt20191106091445').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106091451 = ''; excerpt20191106091451 = $('#excerpt20191106091451').text(); if ($('.translated-ltr') && isChinese(excerpt20191106091451) ) { $.post('save3.php?id=20191106091451', { id: '20191106091451', excerpt: $('#excerpt20191106091451').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106091452 = ''; excerpt20191106091452 = $('#excerpt20191106091452').text(); if ($('.translated-ltr') && isChinese(excerpt20191106091452) ) { $.post('save3.php?id=20191106091452', { id: '20191106091452', excerpt: $('#excerpt20191106091452').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106091453 = ''; excerpt20191106091453 = $('#excerpt20191106091453').text(); if ($('.translated-ltr') && isChinese(excerpt20191106091453) ) { $.post('save3.php?id=20191106091453', { id: '20191106091453', excerpt: $('#excerpt20191106091453').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106091454 = ''; excerpt20191106091454 = $('#excerpt20191106091454').text(); if ($('.translated-ltr') && isChinese(excerpt20191106091454) ) { $.post('save3.php?id=20191106091454', { id: '20191106091454', excerpt: $('#excerpt20191106091454').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106091455 = ''; excerpt20191106091455 = $('#excerpt20191106091455').text(); if ($('.translated-ltr') && isChinese(excerpt20191106091455) ) { $.post('save3.php?id=20191106091455', { id: '20191106091455', excerpt: $('#excerpt20191106091455').text() }, function (text, status) { }); } //alert(excerpt); var excerpt20191106092451 = ''; excerpt20191106092451 = $('#excerpt20191106092451').text(); if ($('.translated-ltr') && isChinese(excerpt20191106092451) ) { $.post('save3.php?id=20191106092451', { id: '20191106092451', excerpt: $('#excerpt20191106092451').text() }, function (text, status) { }); } } var id= setInterval("fun()",1000); function fun(){ if ($('.translated-ltr')) { //alert('翻译搞定'); setTimeout("show()", 6000); clearInterval(id); } } function myrefresh() { window.location.reload(); } setTimeout('myrefresh()', 20000); $('html,body').animate({scrollTop:$('.bottom20191106092451').offset().top}, 1000); $('html,body').animate({scrollTop: '0px'}, 1000); $('html,body').animate({scrollTop: '0px'}, 1000); $('html,body').animate({scrollTop:$('.bottom20191106092451').offset().top}, 1000); //setInterval(表达式,时间):页面载入后,每经过指定毫秒值后执行指定表达式,是间隔多次执行的 //setTimeout(表达式,时间):页面载入后,经过指定毫秒值后执行指定表达式,只执行一次

0
votes
answers
38 views
+10

Phonegap本地SQLite到遠程MySQL

我正在為公司製作內部應用程序,他們希望我將Phonegap用於移動應用程序。搜索之後,我決定繼續使用SQLite插件進行本地存儲,但他們要求當設備上線時,本地存儲上的所有數據將自動同步到遠程MYSql數據庫。我在jQuery中讀到了延遲函數,但我對如何使用它們並不熟悉。 有沒有其他方法可以達到這個要求?
沙发
0

I'm currently investigating to achieve a similar goal.

I need to develop an IONIC/Phonegap app that can potentially do CRUD operations with the followings DB engines: MySQL / Postgres / Microsoft SQL Server / Oracle (not simultaneously).

TypeORM seems to be the solution, but I still couldn't connect from Android device to remote MySQL DB. If you work with TypeORM over NodeJS directly is very easy to have an example up and running and do some CRUD operations with the supported DB engines (just follow the examples and documentation in the previous link).

I'm asking at https://github.com/typeorm/typeorm/issues/548 if anybody has achieved an Android-MySQL connection using TypeORM.

0
votes
answers
45 views
+10

Phonegap Http帖子不能正常工作

我有問題通過phonegap將我的請求發送到節點服務器,而如果我通過像郵差這樣的休息工具發布相同的請求它成功觸發:在看到網絡選項卡時我意識到請求看起來像 http:// localhost:3000 / proxy / myApi 可能這就是我無法解僱我的請求的原因,我試圖在我的http攔截器帖子請求中找到'/ proxy',但它的網址似乎很好。 有人可以幫我這個,獲取請求工作正常,這只是帖子的問題。
0
votes
answers
32 views
+10

如何將localytics phonegap插件轉換為ionic3

我們已經在離子版本1中進行了應用,因為我們正在使用localytics phonegap插件,它在我們的離子版本1中運行良好。現在我們在離子3中遷移我們的應用程序。不幸的是插件沒有更新為ionic3。 所以,請你幫我們如何轉換在我們的ionic3應用程序中工作的插件。 謝謝
0
votes
answers
85 views
+10

Cordova / phonegap - 使用Native FB app和Oauth2登錄facebook

我正在嘗試將登錄與Facebook與我的cordova應用程序(android平台)集成,但是想要使用Oauth2授權代碼授權流程(服務器顯式)。我發現使用webview或inappbrowser方法的插件/手動編寫的代碼工作正常,但這些解決方案無法使用FB Native應用程序檢查用戶是否登錄到FB。 有沒有辦法在沒有inappbrowser的情況下使用代碼流授權,這樣如果用戶安裝了FB本機應用程序,我的應用程序將能夠獲取代碼令牌,而無需每次都要求用戶對Facebook進行身份驗證?
0
votes
answers
46 views
+10

Ionic:與服務器的連接不成功

我使用時有問題--livereload in following command: ionic run android --livereload。如果我不使用--livereload應用程序工作正常。這也僅在我在物理設備上進行測試時才會發生。在模擬器上沒有問題。 我已經嘗試了幾個選項,如: 或者像這裡解釋的main.html解決方案的索引:如何修復與服務器的連接是不成功的。(文件///android_asset/www/index.html) 有誰知道問題的原因是什麼以及如何解決?
0

Well it seems like your physical device is not able to communicate with machine. Reason could be

  1. Port not accessible because of any firewall restriction
  2. Both under different networks, therefore machine's IP is not accessible from device.

When you run "Ionic cordova run android --l", you get an IP address in command line, did you try accessing that IP along with port from device's browser?

板凳
0
+50

After a time I've noticed that when I've closed my terminal window in Intelij the problem never occured. Now I end the process and then close the terminal.

It seems that somehow the process remained active after "stopping" it. I'm running my ionic run android --livereload --target=emulator-5554 command in a new terminal now.

enter image description here