我正在经历一个奇怪的行为(可能它并不奇怪,但只是我不理解为什么)与包含一些对象的javascript数组.
由于我不是javascript专家,因此可能会清楚地解释为什么会发生这种情况,我只是不知道.
我有一个在文档中运行的JavaScript.它创建了一个与此类似的对象数组:
var myArray = [{"Id":"guid1","Name":"name1"},{"Id":"guid2","Name":"name2"},...];
Run Code Online (Sandbox Code Playgroud)
如果我在创建它的地方打印出这个数组,就像JSON.stringify(myArray)一样,我得到的是我所期待的:
[{"Id":"guid1","Name":"name1"},{"Id":"guid2","Name":"name2"},...]
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试从子文档访问此数组到此文档(由第一个文档打开的窗口中的文档),则该数组不再是数组.因此,在子文档中执行JSON.stringify(parent.opener.myArray)将导致以下结果:
{"0":{"Id":"guid1","Name":"name1"},"1":{"Id":"guid2","Name":"name2"},...}
Run Code Online (Sandbox Code Playgroud)
这不是我所期待的 - 我期望得到与我在父文档中所做的相同.
任何人都可以向我解释为什么会发生这种情况以及如何解决它,以便从子窗口/文档寻址时数组仍然是一个数组?
PS.如上所述,对象没有添加到数组中,它们是这样添加的:
function objTemp()
{
this.Id = '';
this.Name = '';
};
var myArray = [];
var obj = new ObjTemp();
obj.Id = 'guid1';
obj.Name = 'name1';
myArray[myArray.length] = obj;
Run Code Online (Sandbox Code Playgroud)
如果这有任何区别.
任何帮助将非常感谢,既可以解决我的问题,也可以更好地了解正在发生的事情:)
我现在已经尝试了几个方法来隐藏新进程的窗口(在这种情况下它只是用于测试的notepad.exe),但是无论我尝试什么,它都无法工作.
我现在读了许多帖子都说同样的,为什么它不适合我呢?
我有一个控制台应用程序,应该启动其他进程而不显示他们的窗口.
我试图让我的控制台应用程序启动notepad.exe没有窗口,但它只是无法正常工作.
ProcessStartInfo info = new ProcessStartInfo("path to notepad.exe");
info.RedirectStandardOutput = true;
info.RedirectStandardError = true;
info.CreateNoWindow = true;
info.UseShellExecute = false;
Process proc = Process.Start(info);
Run Code Online (Sandbox Code Playgroud)
我也试过使用info.WindowStyle的各种设置,我试图将我的控制台应用程序配置为Windows应用程序,但是我做的并不重要,子进程总是打开一个窗口.
这是不允许从控制台应用程序或这里有什么问题 - 任何人都可以对此有所了解吗?
我在Windows 7 x64上使用.NET 4.0
我是 Xamarin 的新手,我目前正在使用 Xamarin.Forms 开发示例或“概念证明”应用程序。
我应该从这个应用程序执行打印任务,尽管我现在还不确定要打印什么(屏幕、标签内容、文件等)。
无论哪种方式,从 Xamarin.Forms 应用程序打印的最简单方法是什么?(当前目标主要是 Android 4.4+)。
我希望这不会太复杂:)
编辑:
好吧,让我更新这篇文章,因为原文可能有点雄心勃勃/含糊不清。
我有一个 Xamarin.Forms 项目(+ 一个 Android 部分),我在项目的 XF 部分有一些可用的 HTML,我需要进入 WebView 并打印它。据我所知,WebView 的事情必须在项目的 Android 部分完成,因为这是处理打印的地方。我希望这可以通过代码来完成,因为我真的不需要显示 WebView,只需打印它的内容。项目的 Android 部分只有 MainActivity,没有布局或 XAML 文件。我不知道在哪里添加 WebView 或如何访问它(除了 DependecyService 在这里似乎是一个流行词)所以我有点卡在这里。
我认为对于比我有更多 Xamarin 经验的人来说,这项任务应该是微不足道的。
我正在尝试在Android文件系统上写入和读取文件。您可能认为这很简单,但是我似乎无法为实际存在的文件夹/路径找到正确的枚举器。
我已经阅读了几篇关于同一主题的文章,但没有一篇文章能直接回答这个问题,那些似乎已经解决了问题的文章,却使用了对我来说似乎无效的方法。一些建议似乎与System.IO有关,而其他建议似乎与Java等价。
我正在尝试做的事情很简单,就是在内部存储中的某个位置创建文件(而不是外部SD卡等),而该文件可通过设备本身(通过文件浏览器应用程序或类似工具)访问。
如果一切顺利(目前还不行),那么我也想稍后再阅读。
我不是在寻找写入或读取文件的代码,而是在寻找可以为我提供正确路径的文件夹。
我尝试了许多不同的变体,其中一些是:
Environment.GetFolderPath(Environment.SpecialFolder.Personal);
返回路径:/ data / data / my_app_full_name / files /
全局:: Android.OS.Environment.ExternalStorageDirectory.AbsolutePath.ToString();
返回路径:/ storage / emulated / 0 /
任何人都可以就使用哪个枚举器给出明确的答案吗?-将不胜感激。
PS。我正在通过USB从Xamarin Studio在实际设备(Android 5.0.2)上启动该应用程序。
编辑:答案,至少对我来说,是在misho重播的评论下找到的。
我遇到了一个 Web API 的问题,该 API 接收 PDF 文档(PDF 表单)作为 base64 编码字符串,将其放入文件中,填充一些字段(使用iTextSharpPdfStamper
类)并将结果发送回Base64 编码的字符串,再次被制成文件。
当我随后尝试使用Foxit Reader打开此文件/文档时,我仍然可以编辑这些字段,但是当使用Adobe Acrobat Reader尝试打开此文件/文档时,这些字段不再可编辑。
在福昕阅读器中打开属性页并查看文档的安全属性时,它说一切都是允许的。然而,当在Adobe Acrobat Reader中执行相同操作时,它表示不允许评论、填写字段和签名(这是在将其发送到 API 之前的情况)。
不幸的是,我无法规定最终用户正在使用哪种 PDF 阅读器,所以我需要它是通用的。
我可以看到许多其他人都发布了类似的问题,但我没有在那里看到我的特定问题。
有谁知道这里发生了什么以及如何解决它?
编辑:添加代码
我正在这样做(稍微简化了一点,但相同):
PdfReader reader = new PdfReader("path to PDF form file");
stamp = new PdfStamper(reader, new FileStream("path to filled PDF form file", FileMode.Create));
AcroFields form = stamp.AcroFields;
IDictionary<string, AcroFields.Item> fs = form.Fields;
foreach (var f in fs)
{
form.SetField(f.Key, "some value");
}
stamp.Close();
Run Code Online (Sandbox Code Playgroud)
编辑:添加了示例 PDF …
c# ×2
xamarin ×2
android ×1
arrays ×1
console ×1
file-io ×1
itext ×1
javascript ×1
object ×1
pdf-form ×1
pdfstamper ×1
printing ×1
windowless ×1
windows ×1