我目前正在搞乱Facebook Chat API.我想通过应用程序向我的Facebook联系人发送聊天消息.
使用facebook提供的示例,我能够连接到Facebook聊天服务器.但这里有更多的反复试验.我只能模糊地理解请求和响应是如何发送和接收的.如果有人可以提供进一步的解释或进一步阅读,那将是很好的.
我的实际问题是:如何在连接聊天服务器后发送消息?
<?php
// Copyright 2004-present Facebook. All Rights Reserved.
$STREAM_XML = '<stream:stream '.
'xmlns:stream="http://etherx.jabber.org/streams" '.
'version="1.0" xmlns="jabber:client" to="chat.facebook.com" '.
'xml:lang="en" xmlns:xml="http://www.w3.org/XML/1998/namespace">';
$AUTH_XML = '<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" '.
'mechanism="X-FACEBOOK-PLATFORM"></auth>';
$CLOSE_XML = '</stream:stream>';
$RESOURCE_XML = '<iq type="set" id="3">'.
'<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">'.
'<resource>fb_xmpp_script</resource></bind></iq>';
$SESSION_XML = '<iq type="set" id="4" to="chat.facebook.com">'.
'<session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></iq>';
$START_TLS = '<starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>';
function open_connection($server) {
print "[INFO] Opening connection... ";
$fp = fsockopen($server, 5222, $errno, $errstr);
if (!$fp) {
print "$errstr ($errno)<br>";
} else {
print "connnection open<br>"; …Run Code Online (Sandbox Code Playgroud) (在downvoting/flagging之前请注意,已经存在类似的问题,但它们都没有使用普通的javascript工作)
每当在iOS设备上点击Facebook-Feed上的链接(仅通过Facebook应用程序)时,它将在WebView中打开,而不是在新的浏览器窗口中打开(就像在Android上一样).
当发生这种情况时,即将打开的Web应用程序会中断,因此我需要以某种方式欺骗iOS并强制它在用户标准浏览器中打开链接(Web应用程序可以正常运行).
如果仅在按下按钮时才有可能,那也没问题.但是从我尝试过的所有东西都在WebView中打开,我无法让它设法在浏览器中打开它.
我见过几个ObjectiveC解决方案,我当然不能在Web应用程序中使用它们.所以我想坚持使用JS/HTML(或PHP,但我认为它不会有太大的帮助)
什么行不通:
<a href="http://google.com" target="_blank">My Link Text</a>
Run Code Online (Sandbox Code Playgroud)
与target属性的普通链接不起作用.该链接将在WebView中打开.
window.open('http://google.com');
Run Code Online (Sandbox Code Playgroud)
window.open也不会工作(当然我已将它附加到事件处理程序).似乎webview window.open()无论如何都不会响应.
那么这里有谁有解决方案?我希望这不是一些奇怪的iOS指南.
我搜索了大约 3 个小时来找到我的问题的解决方案。我已经浏览了有关我的问题的 stackoverflow 问题,但找不到解决方案。
我目前正在尝试使用 PHP 替换 PDF 表单字段中的文本。PDF 文件有一个文本字段,其中包含一个占位符文本,如 [placeholder]。
我试图做的是:
$pdf_content = file_get_contents(source_pdf.pdf);
$put = str_replace('[placeholder]', 'NEW VALUE', $pdf_content);
file_put_contents('temp_pdf/test.pdf', $put);
Run Code Online (Sandbox Code Playgroud)
当我打开 PDF 时,占位符似乎没有被替换。但是如果我点击文本字段,我的“新值”就会出现。如果我再次点击“[占位符]”,则会再次分配。
因此,我认为这不是我的目的的正确尝试。
我现在的问题是:有没有简单有效的方法来实现这一点?我不想使用 FDF,而是替换源 PDF 中的文本。
我目前正在尝试使用HTML5 FileAPI构建文件上传器.如果文件是图像,则文件上载器应该处理多个文件并显示图像预览.
由于FileReader类异步工作,我想等到所有文件都被读取.因此我使用Deferreds.
读取文件的方法返回一个promise.另一种方法遍历所有文件并将所有promises推送到数组中.然后,我将所有promises添加到我的数组后应用then()方法.
现在我的问题.因为then()方法只被调用一次,所以我得到了所有的承诺.我没有机会处理每一个承诺.我想要做的是,一旦它们全部存在并且返回结果,就循环我所有的承诺.
这是我的FileProcessor对象
read: function(file) {
var reader = new FileReader();
var deferred = $.Deferred();
reader.onload = function(event){
deferred.resolve(event.target.result);
};
reader.onerror = function() {
deferred.reject(this);
}
if(/^image/.test(file.type))
reader.readAsDataURL(file);
return deferred.promise();
},
Run Code Online (Sandbox Code Playgroud)
这里是FileManager对象的handleFileSelect()方法,它应该调用FileProcessor.read()方法.
handleFileSelect: function(e){
var $fileList = $('#file-list');
var files = e.target.files;
var promises = []; //Promises are going to be stored here
var filestring = '';
var processedFile;
// Loop trough all selected files
for(var i = 0; i < …Run Code Online (Sandbox Code Playgroud)