iframe中的Java Applet无法在Mac Safari中加载

时间:2010-11-05 16:58:10

标签: java macos iframe safari applet

对于Facebook iframe应用,我们加载了一个文件浏览器Java applet。这适用于PC上的所有主流浏览器和Mac上的Firefox。它也可以在Mac上的Safari中加载iframe。

但是,只要在Safari / Mac中的iframe中调用该页面,applet就不会加载。我们确实获得了签名的applet权限弹出,但之后加载只是旋转直到它超时。

我已经在Facebook以外的iframe中测试了这个,所以我知道这不是Facebook的问题。还确保在Safari中启用了Java并使其保持最新状态,并且在控制台中没有发现相关的错误消息。

是否有其他人遇到此问题,如果有,是否有可以实施的解决方案或解决方法?

更新:以下来自Java控制台的输出。始终挂在liveconnect呼叫的同一位置,不会抛出任何错误。

Java Plug-in 1.6.0_22
Using JRE version 1.6.0_22-b04-307-10M3261 Java HotSpot(TM) Client VM
User home directory = /Users/user
Java Plug-in 1.6.0_22
Using JRE version 1.6.0_22-b04-307-10M3261 Java HotSpot(TM) Client VM
User home directory = /Users/user
network: Loading user-defined proxy configuration…
network: Done.
network: Loading proxy configuration from Netscape Navigator…
network: Done.
network: Loading direct proxy configuration…
network: Done.
network: Proxy Configuration: No proxy
basic: Referencing classloader: sun.plugin.ClassLoaderInfo@da90c, refcount=1
basic: Added progress listener: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@1797795
basic: Loading applet…
basic: Initializing applet…
basic: Starting applet…
basic: completed perf rollup
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Connecting http://[server_address_removed]/testutility10_21_2009_10_27_45.jar with proxy=DIRECT
network: Connecting socket://[server_address_removed]:80 with proxy=DIRECT
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Connecting http://[server_address_removed]/testutility10_21_2009_10_27_45.jar with proxy=DIRECT
network: Downloading resource: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar
Content-Length: 3,686
Content-Encoding: null
security: Blacklist revocation check is enabled
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Connecting http://[server_address_removed]/testutility10_21_2009_10_27_45.jar with proxy=DIRECT
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/testutility10_21_2009_10_27_45.jar, version: null]
BaseApplet:init-complete
applet:start
invoking startup callback testAppletInitialized
liveconnect: JSObject::call: name=open
basic: Referencing classloader: sun.plugin.ClassLoaderInfo@602b6b, refcount=1
basic: Added progress listener: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@18a6e6e
basic: Loading applet…
basic: Initializing applet…
basic: Starting applet…
basic: completed perf rollup
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Connecting http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar with proxy=DIRECT
network: Connecting socket://[server_address_removed]:80 with proxy=DIRECT
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Connecting http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar with proxy=DIRECT
network: Downloading resource: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar
Content-Length: 33,019
Content-Encoding: null
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
security: Loading Root CA certificates from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security/cacerts
security: Loaded Root CA certificates from /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security/cacerts
security: Loading certificates from Deployment session certificate store
security: Loaded certificates from Deployment session certificate store
security: Loading Root CA certificates from from keychain
security: Loaded Root CA certificates from from keychain
security: Validate the certificate chain using CertPath API
security: Obtain certificate collection in Root CA certificate store
security: Obtain certificate collection in Root CA certificate store
security: Obtain certificate collection in Root CA certificate store
security: jpicertstore.cert.getkeystore
security: No timestamping info available
security: Cannot find jurisdiction list file
security: The CRL support is disabled
security: The OCSP support is disabled
security: This OCSP End Entity validation is disabled
security: Checking if certificate is in Deployment denied certificate store
security: Checking if certificate is in Deployment permanent certificate store
security: Checking if certificate is in Deployment session certificate store
security: Creating MacOSXTrust
security: Evaluating MacOSXTrust
security: MacOSXTrust: cert chain is valid, no explict intent
security: MacOSXTrust: cert chain is valid, keychain explicity requested user confirmation
security: Evaluating trust of site: [server_address_removed]
security: Did not find a trusted site record for: http://[server_address_removed]<ab7662bf>
security: Showing MacOSXTrustSiteDialog
security: User permitted app to continue with priviledges
security: MacOSXTrustUI.evaluateTrustAfterShow: returning GrantThisSession
security: User has granted the privileges to the code for this session only
security: Adding certificate in Deployment session certificate store
security: Added certificate in Deployment session certificate store
security: Saving certificates in Deployment session certificate store
security: Saved certificates in Deployment session certificate store
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Connecting http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar with proxy=DIRECT
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
network: Cache entry not found [url: http://[server_address_removed]/fileutility10_21_2009_10_27_45.jar, version: null]
calling workaround: javascript:testAppletInitialized("1.6.0_22");BaseApplet:init-complete
SingleFileServer23196574: server at http://127.0.0.1:3145
SingleFileServer23196574: server running
XMLSocketServer18107298:server at xmlsocket://127.0.0.1:7711
XMLSocketServer18107298:policy <cross-domain-policy><allow-access-from domain='[server_address_removed]' secure='false' to-ports='7711' /></cross-domain-policy>
applet:init-complete
XMLSocketServer18107298:running
applet:start
SingleFileServer23196574: now serving certificate e848b62e2782e2cef20fe2d075d9e633 at http://127.0.0.1:3145/certificate1290016856751
invoking startup callback
calling workaround: javascript:appletInitialized("http://127.0.0.1:3145","xmlsocket://127.0.0.1:7711","http://127.0.0.1:3145/certificate1290016856751");running on Mac OS X
applet:start-complete
liveconnect: JSObject::call: name=open

2 个答案:

答案 0 :(得分:1)

更新: 以下解决方案不能始终如一地运作;在相同的环境中(Safari版本,操作系统版本,所有设置都相同),这只适用于我测试过的4台Mac中的1台。仍在寻找一致的解决方案。

我们可以通过修改Mac OS中的Java首选项来解决这个问题:

  1. 打开Java首选项(应用程序&gt;实用程序&gt; Java首选项)
  2. 在“常规”选项卡上,将默认的“在浏览器进程内”更改为“在他们自己的进程中”
  3. 确保在重新启动Safari时清空缓存。
  4. Mac版:10.6.5; Safari版本:5.0.2; Java版本:1.6.0_22-604-307

    Screenshot of Mac OS Java Preferences dialog

答案 1 :(得分:1)

我仍然不知道原因,但我找到了适用于我们的解决方法。我意外发现的是,如果你重新加载applet框架,它将第二次加载applet。一个问题是如果你做得太快它就不会工作,所以我用一秒钟的延迟添加了setTimeout。这似乎对我们有用。

if ((navigator.platform.toUpperCase().indexOf("MAC") != -1) && (navigator.vendor.toUpperCase().indexOf("APPLE") != -1)) { 
 setTimeout("ReloadImageFrame('028-2007-009844', '', " + currentAppID + ")", 1000); }