Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问共享扩展中的网页属性_Javascript_Ios_Uiviewcontroller_Share Extension - Fatal编程技术网

Javascript 访问共享扩展中的网页属性

Javascript 访问共享扩展中的网页属性,javascript,ios,uiviewcontroller,share-extension,Javascript,Ios,Uiviewcontroller,Share Extension,当用户使用javascript文件在iOS上打开共享扩展时,我想访问网页属性(标题、元描述、URL、默认图像等)。我正在为javascript()使用以下代码: var MyExtensionJavaScriptClass=function(){}; MyExtensionJavaScriptClass.prototype={ 运行:函数(参数){ //将网页的baseURI传递给扩展名。 completionFunction({“url”:document.baseURI}); complet

当用户使用javascript文件在iOS上打开共享扩展时,我想访问网页属性(标题、元描述、URL、默认图像等)。我正在为javascript()使用以下代码:

var MyExtensionJavaScriptClass=function(){};
MyExtensionJavaScriptClass.prototype={
运行:函数(参数){
//将网页的baseURI传递给扩展名。
completionFunction({“url”:document.baseURI});
completionFunction({“host”:getHost()});
arguments.completionFunction({“title”:document.title});
completionFunction({“description”:getDescription()});
completionFunction({“image”:getImage()});
},
getHost:function(){
var l=document.createElement(“a”);
l、 href=href;
返回l.hostname;
},
getDescription:function(){
var metas=document.getElementsByTagName('meta');

对于(i=0;i,这里是我如何解决这个问题的

JS代码:

var MyExtensionJavaScriptClass = function() {};

MyExtensionJavaScriptClass.prototype = {
    getDescription: function() {
        var metas = document.getElementsByTagName('meta'); 
        for (i=0; i<metas.length; i++) { 
            if (metas[i].getAttribute("name") == "description") { 
                return metas[i].getAttribute("content"); 
            }
        }
        return "";
    },
    getImage: function() {
        var metas = document.getElementsByTagName('meta'); 
        for (i=0; i<metas.length; i++) { 
            if (metas[i].getAttribute("name") == "og:image" || metas[i].getAttribute("name") == "sailthru.image.full" || metas[i].getAttribute("name") == "twitter:image:src") { 
                return metas[i].getAttribute("content"); 
            }
        }
        return "";
    },
    run: function(arguments) {
    // Pass the baseURI of the webpage to the extension.
        arguments.completionFunction({"url": document.baseURI, "host": document.location.hostname, "title": document.title, "description": this.getDescription(), "image": this.getImage()});
    },
// Note that the finalize function is only available in iOS.
    finalize: function(arguments) {
        // arguments contains the value the extension provides in [NSExtensionContext completeRequestReturningItems:completion:].
    // In this example, the extension provides a color as a returning item.
    // document.body.style.backgroundColor = arguments["bgColor"];
    }
};

// The JavaScript file must contain a global object named "ExtensionPreprocessingJS".
var ExtensionPreprocessingJS = new MyExtensionJavaScriptClass;

// ExtensionPreprocessingJS.test();

我的意思是metas[I].getAttribute(“name”)=“og:image”没有返回图像。@AsadullahAli条件的目标是检查URL中是否集成了open graph标记或sailthru或twitter卡。如果标记存在,则获取图像。此代码可能需要根据您正在测试的URL进行一些更新。您可以共享您正在测试的URL吗?是的,请检查这是meta图像标记。它有“属性”而不是“名称”。我将metas[I].getAttribute(“名称”)更改为metas[I].getAttribute(“属性”)。最后它给了我一个图像链接。感谢您获得了解决方案。
var MyExtensionJavaScriptClass = function() {};

MyExtensionJavaScriptClass.prototype = {
    getDescription: function() {
        var metas = document.getElementsByTagName('meta'); 
        for (i=0; i<metas.length; i++) { 
            if (metas[i].getAttribute("name") == "description") { 
                return metas[i].getAttribute("content"); 
            }
        }
        return "";
    },
    getImage: function() {
        var metas = document.getElementsByTagName('meta'); 
        for (i=0; i<metas.length; i++) { 
            if (metas[i].getAttribute("name") == "og:image" || metas[i].getAttribute("name") == "sailthru.image.full" || metas[i].getAttribute("name") == "twitter:image:src") { 
                return metas[i].getAttribute("content"); 
            }
        }
        return "";
    },
    run: function(arguments) {
    // Pass the baseURI of the webpage to the extension.
        arguments.completionFunction({"url": document.baseURI, "host": document.location.hostname, "title": document.title, "description": this.getDescription(), "image": this.getImage()});
    },
// Note that the finalize function is only available in iOS.
    finalize: function(arguments) {
        // arguments contains the value the extension provides in [NSExtensionContext completeRequestReturningItems:completion:].
    // In this example, the extension provides a color as a returning item.
    // document.body.style.backgroundColor = arguments["bgColor"];
    }
};

// The JavaScript file must contain a global object named "ExtensionPreprocessingJS".
var ExtensionPreprocessingJS = new MyExtensionJavaScriptClass;

// ExtensionPreprocessingJS.test();
for item: AnyObject in (self.extensionContext?.inputItems)! {
    let inputItem = item as! NSExtensionItem

    for provider: AnyObject in inputItem.attachments! {
        let itemProvider = provider as! NSItemProvider

        if itemProvider.hasItemConformingToTypeIdentifier(kUTTypePropertyList as String) {
            itemProvider.loadItemForTypeIdentifier(kUTTypePropertyList as String, options: nil, completionHandler: { (result: NSSecureCoding?, error: NSError!) -> Void in
                if let resultDict = result as? NSDictionary {
                    self.articleTitle = resultDict[NSExtensionJavaScriptPreprocessingResultsKey]!["title"] as! String
                    self.articleHost = resultDict[NSExtensionJavaScriptPreprocessingResultsKey]!["host"] as! String
                    self.articleDesc = resultDict[NSExtensionJavaScriptPreprocessingResultsKey]!["description"] as! String
                    self.articleImage = resultDict[NSExtensionJavaScriptPreprocessingResultsKey]!["image"] as! String
                    self.articleUrl = resultDict[NSExtensionJavaScriptPreprocessingResultsKey]!["url"] as! String
                }
            })
        }
    }
}