小编Mat*_*ine的帖子

如何在Safari中打开外部链接而不是应用程序的UIWebView?

我有一个Phonegap(cordova)应用程序,我想在phonegap WebView中加载一些外部网页,我还有其他外部网页,我想在用户激活它时在Safari中加载.

通常,大多数人都有他们想要在WebView中打开外部链接的问题.将OpenAllWhitelistURLsInWebView设置为YES(在Cordova.plist/Phongap.plist中)可以解决该问题.

但我不想打开WebView的所有链接,只是一些.

我希望我可以打电话window.open('http://someexternalsite')在Safari window.parent.location.href = 'http://mysite'中打开并在WebView中打开它.

知道怎么做吗?

javascript ios cordova

29
推荐指数
5
解决办法
4万
查看次数

iOS:使用XMLHttpRequest进行身份验证 - 处理401响应

我正在写使用的PhoneGap(又名科尔多瓦)iOS应用程序,我有一个登录使用一个XMLHttpRequest通过SSL基本身份验证的用户一个简单的HTML登录页面.当您正确输入用户名和密码时,一切都运作良好.但是,如果输入错误的用户名/密码,则不会调用任何回调.

例如,如果您在Chrome上运行相同的代码,使用错误的用户名/密码,则Chrome会以类似的方式运行,但会弹出身份验证质询对话框.在chrome的对话框上点击取消会将控制权返回给我的javascript代码.不幸的是,在iOS上,UIWebView甚至不会弹出一个auth对话框,它只是挂起.我需要一种方法告诉用户他们输入了错误的用户名或密码,以便他们可以重试.

最接近的一个答案,我能找到的这个http://www.freelock.com/2008/06/technical-note-http-auth-with-ajax但是从服务器更改响应状态似乎并不像正确的事情.

这基本上是我的请求代码的样子,但是当发送一个错误的用户名或密码时,它永远不会到达我的onload回调(实际上onreadystatechange回调只被调用一次,那就是readyState 1,也就是OPEN).

var req = new XMLHttpRequest();
req.onload = function(ev) {
    if (req.status == 401) {
        alert("Invalid Username/Password");
        document.getElementById('password').focus();
    } else if (req.status == 200) {
        window.location.href = some_secure_site;
    } else {
        // edit //
        alert("Some other status");
    }
}
req.onerror = function (ev) { alert('Error'); };
req.ontimeout = function(ev) { alert('Timeout'); };
req.open('GET', uri, true, userValue, passValue);
req.withCredentials = true;
req.send();
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest basic-authentication ios cordova

10
推荐指数
1
解决办法
1万
查看次数

查找给定文件的默认应用程序名称

在Linux中,有没有办法询问任何xdg服务或gtk服务,哪个应用程序是给定文件的默认应用程序?

我意识到xdg-open实际上会启动正确的应用程序.但是,我希望能够在上下文菜单中显示应用程序的名称.因此,当用户点击菜单项时,它将启动xdg-open,这将启动该应用程序.

在OSX上,我可以使用LaunchServices:

def getDefaultDarwinApplication(path):
    import LaunchServices
    import CoreData
    import urllib

    url = CoreData.CFURLRef.URLWithString_("file://"+urllib.quote(path))
    os_status, app_ref, appurl = LaunchServices.LSGetApplicationForURL(url, LaunchServices.kLSRolesAll, None, None)
    if os_status != 0:
        return ""
    apppath = app_ref.as_pathname()
    name = os.path.basename(apppath).replace(".app", "")
    return name
Run Code Online (Sandbox Code Playgroud)

希望在Linux上我可以使用类似的东西.内置的python模块是最好的,但即使屏幕抓取也行.

python linux

7
推荐指数
2
解决办法
1560
查看次数