【问题标题】:Photoshop scripting: app.activeDocument is undefinedPhotoshop 脚本:app.activeDocument 未定义
【发布时间】:2014-03-19 13:18:03
【问题描述】:

我正在尝试访问当前在脚本中打开的文档,但它未定义。但我已经在 Photoshop 中打开了文档。我应该以某种方式初始化它吗? 这是我的代码

function ProcessDocumentWithoutXML()
{  
g_rootDoc      = app.activeDocument;
g_progBar      = new ProgressBar();

if (app.activeDocument != null)
{
    ProcessLayersWithoutXML(g_rootDoc);
    alert("Done!");
} else {
    alert("Missing active document");
}
}

ProcessDocumentWithoutXML();

【问题讨论】:

    标签: javascript photoshop photoshop-script


    【解决方案1】:

    为了让它工作

    g_rootDoc      = app.activeDocument;
    

    需要在函数之外(除非您将源文档传递给该函数)。

    修改代码:

    if (documents.length != 0)
    {
       g_rootDoc = app.activeDocument;
       // g_progBar = new ProgressBar();  // no worky in cs2
       ProcessLayersWithoutXML(g_rootDoc);
       alert("Done!");
    }
    else
    {
        alert("Missing active document");
    }
    
    
    function ProcessDocumentWithoutXML()
    {  
    
    }
    
    ProcessDocumentWithoutXML();
    
    function ProcessLayersWithoutXML()
    {
    }
    

    【讨论】:

    • 这里没关系,问题是app.activeDocument = null
    • 无论如何,如果我已经打开了文档,为什么它为空?另外 - 我有 ProcessLayersWithoutXML 和 ProgressBar,但在这里也没关系
    【解决方案2】:

    如果您在一个窗口中运行 Photoshop 并在另一个窗口中运行 ExtendedScript 中的代码,则需要添加第一行

    “#target photoshop”

    (没有双标记)在您的 js 脚本上。

    【讨论】:

      【解决方案3】:

      在我的情况下,问题是由缺少变量名引起的:

      function fnWithError() {
        var docName = app.activeDocument.name     // <- ExtendScript Toolkit reports error here.
        ...
        ...
        var app.activeDocument.activeLayer.bounds;// <- The real error is here.
        // the code above should be:
        // var bounds = app.activeDocument.activeLayer.bounds;
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-05
        • 2011-08-13
        • 2018-06-23
        • 2020-07-24
        • 2017-10-22
        • 1970-01-01
        • 2019-06-12
        • 2018-11-07
        • 2014-10-17
        相关资源
        最近更新 更多