สำหรับผู้ใช้ Linux ที่มีปัญหานี้ฉันได้สร้างสคริปต์ต่อไปนี้เป็นวิธีแก้ปัญหา:
ก่อนที่จะดำเนินการต่อคุณต้องตรวจสอบให้แน่ใจว่าพริกไทยแฟลชติดตั้งสำหรับ Chrome / Chromium, (flashplugin สำหรับ Firefox) วิธีเดียวที่จะตรวจสอบ (โดยไม่ต้องใช้วิธีแก้ปัญหาด้านล่างคือ) คือการเล่นไฟล์แฟลชบนอินเทอร์เน็ต (หรือใน Firefox ไปที่: ปลั๊กอินและดูว่ามี "Shockwave Flash")
#!/bin/bash
if [ -z $1 ]; then
swf=$(ls *.swf | tail -1)
else
swf=$@
fi
html=$(echo $swf | sed 's:swf:html:g')
echo '<embed src='$swf 'width="100%" height="100%"></embed>' | sed 's:src=:src=":g' | sed 's:swf:swf":g' > "$html"
#chromium "$html" && sleep 20 && rm "$html"
#google-chrome "$html" && sleep 20 && rm "$html"
#firefox about:config & wmctrl -xa firefox && sleep 0.2 && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
(หรือเข้ากันได้กับเส้นประ)
หากต้องการใช้สคริปต์ให้บันทึกเป็นswftohtml.sh (สามารถเป็นชื่อใด ๆ ได้โดยไม่ต้องลงท้ายด้วย. sh) ที่ตำแหน่งใด ๆ ที่คุณต้องการจากนั้นแปลงเป็นคำสั่งที่รันได้ทำให้เป็นนามแฝงใน bashrc หรือ คัดลอกไปยัง / usr / bin / อย่าลืมเรียกใช้chmod + x swftohtml.shเพื่อให้สามารถเรียกใช้งานได้
สคริปต์เมื่อรันโดยไม่มีอาร์กิวเมนต์จะค้นหาในโฟลเดอร์ปัจจุบันเพื่อหาไฟล์ swf และสร้างไฟล์ html ที่สอดคล้องกันซึ่งสามารถใช้เพื่อเรียกใช้ไฟล์ swf นี้ในเบราว์เซอร์ หากมีมากกว่า 1 ไฟล์ swf ในโฟลเดอร์มันจะเริ่มต้นเป็นไฟล์สุดท้าย (เช่นถ้าคุณมีชื่อไฟล์ 1.0.swf และ filename2.0.swf มันจะเริ่มต้นที่ filename2.0.swf)
อีกวิธีหนึ่งในการกำหนดเป้าหมายไฟล์ swf เฉพาะคุณสามารถป้อนชื่อไฟล์ (หรือพา ธ แบบเต็มไปยังไฟล์) เป็นอาร์กิวเมนต์สำหรับสคริปต์และจะใช้ไฟล์นั้นแทน (เช่นชื่อไฟล์ swftohtml.sh 1.0.swf )
หากคุณต้องการทำให้สคริปต์สมบูรณ์โดยอัตโนมัติ:
หากต้องการเปิดไฟล์ swf โดยอัตโนมัติในเบราว์เซอร์ของคุณและทำการลบไฟล์ html ที่เป็นผลลัพธ์โดยอัตโนมัติหลังจากใช้งานแล้วให้ยกเลิกการใส่เครื่องหมายลบหนึ่งในบรรทัดต่อไปนี้ที่ด้านล่างของสคริปต์ (ขึ้นอยู่กับเบราว์เซอร์ของคุณ):
#chromium "$html" && sleep 20 && rm "$html"
#google-chrome "$html" && sleep 20 && rm "$html"
#firefox about:config & wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
ตอนนี้สคริปต์จะเปิดไฟล์ html ในเบราว์เซอร์ของคุณทันทีที่สร้างขึ้น หากมีเบราว์เซอร์ของคุณทำงานอยู่อินสแตนซ์นั้นจะลบไฟล์ html ใน 20 วินาที (ให้เวลากับคุณในการแจ้งให้เบราว์เซอร์เปิดไฟล์ด้วยปลั๊กอินแฟลช) หากไม่มีเบราว์เซอร์ของคุณอยู่แล้วไฟล์จะถูกลบทิ้งใน 20 วินาทีหลังจากปิดเบราว์เซอร์
ด้วยชุดนี้คุณสามารถกำหนดค่าไฟล์ SWF เพื่อเปิดด้วยสคริปต์และกระบวนการนี้เป็นแบบอัตโนมัติอย่างสมบูรณ์เพื่อให้คุณสามารถเปิดไฟล์ SWF ได้โดยตรงโดยไม่ต้องกังวลเกี่ยวกับการสร้าง (หรือลบ) ไฟล์ html ด้วยมืออีกนัยหนึ่ง มันจะทำตัวเหมือนที่มันควรจะเป็นตอนนี้ (โปรดทราบว่าอาจมีบางกรณีที่ไม่สามารถลบไฟล์ html ได้ แต่ในกรณีนี้คุณสามารถเพิกเฉยได้)
สำหรับผู้ใช้ Firefox:
เวอร์ชัน Firefoxนั้นค่อนข้างซับซ้อนต้องติดตั้ง wmctrl และ xdotool นี่คือเหตุผลสำหรับ firefox ในการเล่นไฟล์ swf แบบโลคอลด้วยวิธีนี้คุณต้องปิดการใช้งานplugins.http_https_onlyในabout: configสคริปต์จะปิดใช้งานโดยอัตโนมัติเปิดไฟล์แฟลชจากนั้นเปิดใช้งานอีกครั้งเนื่องจากเป็นการตั้งค่าที่มากที่สุด คนทั่วไปจะต้องการเปิดใช้งานต่อไป เบราว์เซอร์จะต้องเปิดก่อนที่คำสั่งจะทำงาน หากคุณคิดว่าเป็นไปได้ว่าเบราว์เซอร์ Firefox ของคุณจะถูกปิดเมื่อคุณเรียกใช้คำสั่งให้แทนที่บรรทัดด้วยสิ่งนี้:
firefox about:config & sleep 1 && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
ตอนนี้จะให้เบราว์เซอร์ 1 วินาทีเพื่อเปิดใช้ก่อนที่จะเรียกใช้สคริปต์ที่เหลือ (อาจต้องมีการปรับสำหรับคอมพิวเตอร์ที่ช้ากว่า)
สคริปต์เวอร์ชัน Firefox จะลบไฟล์หลังจากผ่านไป 20 วินาที
การทดสอบประสิทธิภาพ:
ฉันทำการทดสอบประสิทธิภาพเบื้องต้นและผลลัพธ์เหล่านี้คือ:
- Chrome / Chromium Pepper Flash (PPAPI): เร็วที่สุด
- Adobe Flash Projector (NPAPI) (ไวน์): เร็ว
- Firefox Flashplugin (NPAPI): ช้าที่สุด
สำหรับความมั่นคงมีกรณีมุมที่ PPAPI จะทำงานเป็นข้อบกพร่อง / ข้อผิดพลาดที่ NPAPI ไม่ได้ แต่พวกเขาจะหายาก
ประสิทธิภาพระหว่าง Pepper Flash และ Flash Projector ค่อนข้างเล็ก (เป็นที่น่าสังเกต แต่แทบจะไม่) ในขณะที่ประสิทธิภาพของปลั๊กอินแฟลช firefox นั้นช้ากว่าที่เหลือด้วยเหตุผลบางประการ
ดังนั้นหากการเล่นเกมแฟลชเป็นเป้าหมายผมขอแนะนำให้ใช้โครเมียมกับพริกไทยแฟลชติดตั้งในส่วนที่เหลือโดยทั่วไป สำหรับงานอื่นไม่น่าเป็นไปได้