วิธีเปิดหน้าต่าง Firefox ใหม่ด้วยอาร์กิวเมนต์ URL


3

ฉันพยายามอัพเกรดคำตอบที่มีอยู่

วิธีเปิดหน้าต่าง Firefox ใหม่ด้วย Terminal

เพื่อยอมรับ URL เป็นอาร์กิวเมนต์และเปิดหน้าต่างใหม่ Firefox

ฉันสามารถใช้

open -a Firefox 'http://localhost:3000'

แต่จะเปิดในแท็บไม่ใช่หน้าต่างใหม่ตามต้องการ

รูปแบบหนึ่งคือ

open -n -a Firefox 'http://localhost:3000'

ซึ่งทำให้ฉันมีข้อผิดพลาดมาตรฐาน

ปิด Firefox สำเนาของ Firefox เปิดอยู่แล้ว สามารถเปิด Firefox ได้ครั้งละหนึ่งสำเนาเท่านั้น

แต่มันจะเปิด URL ในเบราว์เซอร์ Safari เริ่มต้นของฉัน


ฉันได้ลองตัวเลือกต่าง ๆ ตาม man page สำหรับการเปิดและบนเว็บไซต์ Mozilla สำหรับการเปิด URL ด้วยผลิตภัณฑ์ของพวกเขา แต่พวกเขาบอกว่าข้อมูลนั้นเลิกใช้แล้วและอาจไม่ทำงาน ไม่เหมาะสำหรับฉันเช่น

/Applications/Firefox.app/Contents/MacOS/firefox -new-window "http://localhost:3000"
/Applications/Firefox.app/Contents/MacOS/firefox -remote "openURL(http://localhost:3000, new-window)"

ทั้งสองล้มเหลวด้วยข้อผิดพลาดทั่วไปด้านบน

ฉันพยายามแก้ไขสคริปต์ในลิงค์ก่อนหน้า ฉันอัปเดตเป็นต่อไปนี้

# A function to be able to open up a new Firefox window if firefox is already
# running.
function firefox-window() {
/usr/bin/env osascript <<-EOF
on run argv
  tell application "System Events"
    if (name of processes) contains "Firefox" then
        tell application "Firefox" to activate
        keystroke "n" using command down
    else
        tell application "Firefox" to activate
    end if

    return "I am trying to open " & item 1 of argv & " in a new Firefox window."
  (*
    if & item 1 of argv &
      return "I am the if you seek"
      tell application "Firefox" OpenURL & item 1 of argv &
    end if
  *)

  end tell
end run
EOF
}

ฉันได้รับข้อผิดพลาด:

ข้อผิดพลาดในการดำเนินการ: ไม่สามารถสร้างรายการ 1 จาก {} เป็นข้อความ Unicode ประเภท (-1700)

และฉันติดอยู่ที่นั่น ดังนั้นฉันจึงได้รับปัญหาในการรับ URL ลงใน applescript เป็นอาร์กิวเมนต์

ฉันได้รับโฮสต์ของข้อผิดพลาดอื่น ๆ แต่สคริปต์ต้นฉบับจะทำงานแม้จะมีข้อผิดพลาดก่อนหน้าข้อผิดพลาด UNICODE

~$ firefox-window 'http://localhost:3000'
2012-06-10 16:13:30.258 osascript[789:60f] Error loading /Library/ScriptingAdditions/Adobe Unit
 Types.osax/Contents/MacOS/Adobe Unit Types:  dlopen(/Library/ScriptingAdditions/Adobe Unit
 Types.osax/Contents/MacOS/Adobe Unit Types, 262): no suitable image found.  Did find:
    /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types: no
     matching architecture in universal wrapper
osascript: OpenScripting.framework - scripting addition "/Library/ScriptingAdditions/Adobe Unit
 Types.osax" declares no loadable handlers.
294:300: execution error: Can’t make item 1 of {} into type Unicode text. (-1700)

ฉันหวังว่ามันจะง่าย แต่ฉันก็กระแทกหัวกับกำแพง ฉันประหลาดใจว่ามันจะไม่ทำงานกับคำสั่งเปิดง่ายดังนั้นฉันสามารถทำได้ในเชลล์สคริปต์

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมในการรับ Firefox เพื่อเปิดหน้าต่างใหม่ในขณะที่ส่ง URL ไปให้


จะมองเข้าไปในภายหลังว่า ต่อไปนี้เป็นวิธีกำจัดข้อผิดพลาดประเภทหน่วย Adobe: ข้อผิดพลาดในการแปลงหน่วยประเภท | Mac OS X 10.6
slhck

โปรดอ่านบทช่วยสอนเกี่ยวกับ AppleScript tell application "Firefox" OpenURL & item 1 of argv & เป็นไวยากรณ์ที่ผิดอย่างสมบูรณ์ คุณต้องเขียน tell application Firefox toเช่นอย่าลืมที่จะบอก ไปยัง ทำอะไรสักอย่าง. นอกจากนี้คุณสามารถใช้ & สำหรับการต่อสตริงเท่านั้นซึ่งไม่จำเป็นแม้แต่ที่นี่ ดังนั้นในสคริปต์ของคุณเพียงใช้ item 1 of argv และไม่ & item 1 of argv &.
slhck

คำตอบ:


1

บันทึก: ต่อไปนี้ใช้งานได้กับ OS X 10.7 แต่ไม่ถึง 10.8 - ดู คำถามนี้ .

เปิดออก AppleScript Editor.app และวางต่อไปนี้:

on run argv
    tell application "System Events"
        if (name of processes) contains "Firefox" then
            tell application "Firefox" to activate
            keystroke "n" using command down
            delay 0.1 -- UI scripting delay
        else
            tell application "Firefox" to activate
            delay 0.3 -- more delay
        end if
        keystroke "l" using command down
        keystroke item 1 of argv
        keystroke return
    end tell
end run

ที่นี่เราจะเปิดหน้าต่างใหม่ด้วย Cmd-N หรือเพียงเปิดใช้งาน Firefox ฉันรวมการหน่วงเวลาที่กำหนดเอง - สิ่งนี้มีความจำเป็นเนื่องจากการกระทำของ UI มีการหน่วงเวลาโดยธรรมชาติและสคริปต์จะพิมพ์ออกไปแม้ว่าหน้าต่างยังไม่พร้อม

ในที่สุดเราจะ keystroke อาร์กิวเมนต์แรกซึ่งก็คือ item 1 of argv.

บันทึกไฟล์นี้ไว้ใต้ firefox-window.scpt, เช่น. ในโฟลเดอร์บ้านของคุณ จากนั้นแก้ไขฟังก์ชันเชลล์ใน ~/.bash_profile:

function firefox-window() {
  osascript ~/firefox-window.scpt "$1"
}

สิ่งนี้จะผ่านอาร์กิวเมนต์บรรทัดคำสั่งแรก $1 เพื่อ AppleScript ที่จะเข้าถึงได้เป็น item 1 of argv.

บันทึก .bash_profile และอย่าลืมรีสตาร์ทเครื่องหรือป้อน source ~/.bash_profile. จากนั้นเพียงรันคำสั่งด้วย:

firefox-window apple.com
firefox-window google.com

…และอื่น ๆ


หากแอปสามารถใช้ URL เป็นอาร์กิวเมนต์เช่น Firefox / Chrome / Safari มันจะไปได้แม้เพียงแค่ป้อน :: open -a Safari www.google.com
konqui

@Konqui แต่จะเปิดแท็บใหม่หากหน้าต่างเปิดอยู่แล้วไม่ใช่หน้าต่างใหม่ตามที่ OP ร้องขอ
slhck

มันเป็นความจริงไม่เห็นว่าเขาต้องการเปิดในหน้าต่างใหม่บน Firefox ตามเว็บไซต์นี้ developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options ควรมีตัวเลือก -new-tab และ -new-window เพื่อตั้งค่า
konqui

@konqui จุดดีบางทีนี่อาจเป็นไปไม่ได้ในตอนนั้นหรือฉันต้องพลาดมันไป
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.