Archive for the 'WKWebView' Category

2015/09/16 指定URLをロード WKWebView版

Cocoaの機能を用いて指定URLのページの内容を読み込んで、ページのタイトルを取得するAppleScriptです。

先のオフラインレンダラーのAppleScriptをMLに投稿してみたところ、ShaneよりYosemiteならWkWebViewが新たにWebViewの後継として用意されているので試してはどうか? という指摘があり、(知らなかったので)慌てて調べた次第です。

通常のAppleScriptでCocoaの機能が使えるといっても、さすがにKey Value Observation(キー値監視)はサポートしていないので、 そこはloading()プロパティをループで確認しています。ただ、このシンプルさゆえにフォアグランド実行(Control-Command-R)させる必要がありません。

一応、これで指定URLの内容は取得できているようなのですが、いまだその内容を画像化はできていません。いまのところ、綺麗な800×600ドットのサイズのグレーの画像が取得できています(つまり、明らかに失敗している)。

# El Capitanで動かしてみたら、実行が終了しませんでした。

AppleScript名:ASOCで指定URLをロード_WKWebView版
– Created 2015-09-16 by Takaaki Naganoya
– 2015 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “WebKit”

property theWebView : missing value

set aURL to “http://www.apple.com/us/shop/browse/home/specialdeals/mac”
set aRes to getPage(aURL)
set aTitle to (theWebView)’s title()
return aTitle as text
–>  ”Refurbished Mac - Apple Certified - Apple”

–Download the URL page to WkWebView
on getPage(aURL)
  set thisURL to current application’s |NSURL|’s URLWithString:aURL
  
set theRequest to current application’s NSURLRequest’s requestWithURL:thisURL
  
  
set aConf to current application’s WKWebViewConfiguration’s alloc()’s init()
  
  
set (my theWebView) to current application’s WKWebView’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, 800, 600)) configuration:aConf –フレームの大きさは根拠レス
  (
my theWebView)’s setNavigationDelegate:me
  (
my theWebView)’s loadRequest:theRequest
  
  
set waitLoop to 1000 * 60 –60 seconds
  
  
set hitF to false
  
repeat waitLoop times
    set aLoadF to ((my theWebView)’s estimatedProgress()) as number
    
if aLoadF = 1.0 then
      set hitF to true
      
exit repeat
    end if
    
current application’s NSThread’s sleepForTimeInterval:(“0.001″ as real) –delay 0.001
  end repeat
  
  
return hitF
end getPage

★Click Here to Open This Script