2016-10-02 4 views
0

私はこのようなことをしようとしています。私は何を見落とすことができますか?幅と高さの変数を持つ電子ウィンドウを作成すると、ウィンドウがなくなり、エラーも発生しません。

数値の幅と高さを直接入力するとウィンドウが完全に機能しますが、変数を使用するとレンダリングされません。

function createNewMainWindow() { 
    var a = 1000; 
    var b = 800; 
    mainWindow = new BrowserWindow({ 
    show: true, 
    width: a, 
    height: b, 
    minWidth: 300, 
    minHeight: 300, 
    frame: false, 
    title: 'Recall', 
    icon: iconPath, 
    alwaysOnTop: false, 
    useContentSize: false, 
    webPreferences: { 
     zoomFactor: 1, 
     allowRunningInsecureContent: true, 
     nodeIntegration: true, 
    } 
    }); 
} 

app.on('ready', async() => { 
    await installExtensions(); 
    createNewMainWindow(); 
    mainWindow.loadURL(`file://${__dirname}/app/app.html`); 
    mainWindow.show(); 
    mainWindow.focus(); 
} 
+0

'mainWindow'はどこかで宣言しましたか?私はそれがあなたの問題に関係しているかどうかは分かりませんが、 'ready'ハンドラと' createNewMainWindow'がどのように同じ値を参照するのかははっきりしません。 – Jacob

+0

ここで重要な細部は省略していると思います。 'BrowserWindow'コンストラクタが、高さと幅がリテラルか可変の値で指定されているかどうかを"知る "方法はありません。おそらくあなたの投稿を単純化するには、実際の問題を残しているでしょう。単純な 'a'や' b'変数ではなく、変数が定義されていない状況であるかもしれません。 – Jacob

+0

私は自分のコードを変更して、関数呼び出しの直前にハードコードされているように変数を正確に定義しているので、そうでないようです。 私は他のコードを除外しましたが、数値を使用すると全体が機能し、変数を使用するとエラーが発生するため、制限付きコードサンプル内で何かを見落としているようです。 – Slbox

答えて

0

それはあなたのcreateNewMainWindow()関数内で宣言される前に、あなたのmainwindow.loadURL()関数が呼び出されているように見えます。あなたはこれを試すことができます...

function createNewMainWindow() { 
var a = 1000; 
var b = 800; 
mainWindow = new BrowserWindow({ 
    show: true, 
    width: a, 
    height: b, 
    minWidth: 300, 
    minHeight: 300, 
    frame: false, 
    title: 'Recall', 
    icon: iconPath, 
    alwaysOnTop: false, 
    useContentSize: false, 
    webPreferences: { 
     zoomFactor: 1, 
     allowRunningInsecureContent: true, 
     nodeIntegration: true, 
    } 
    }); 

    mainWindow.loadURL(`file://${__dirname}/app/app.html`); 

    mainWindow.once('ready-to-show',() => { 
    mainWindow.show(); 
    mainWindow.focus(); 
    }); 

} 

app.on('ready', async() => { 
    await installExtensions(); 
    createNewMainWindow(); 
}