尽管 Silverlight 3 设计用于与 Silverlight 1.0 完全兼容,具有 Silverlight 3 运行时的人访问您的应用程序时,仍有一些 JavaScript 代码的行为可能与预期的行为不同。

出现此情况的原因很多。例如,Silverlight 3 可能针对某个异常提供不同的状态报告,或 Silverlight 3 可能修复了 bug,您用于避免出现 bug 的解决方法不再起作用。 这些问题仅在特定情形下出现,通常不应导致应用程序失败。

本主题描述您可能遇到的问题并提供您可以采取的措施以便解决问题。

本主题包括下列各节。

  针对图像 URL 报告异常而非静默失败

在 Silverlight 1.0 中,从无效 URL 加载了图像的应用程序静默失败,不引发异常。Silverlight 3 在这种情况下则会引发异常,因此如果您的代码不具有此情形的异常处理程序且用户使用的是 Silverlight 3,他们将会看到一个 Silverlight 错误对话框。除此之外,您的应用程序的行为一切照旧(它将无法从无效 URL 加载图像)。

措施:在从 URL 读取图像前,确保您在使用异常处理程序。

  双重编码图像 URL 时行为的变化

Silverlight 1.0 无法处理图像 URL 中的某些字符,因此双重编码很有必要。这个问题在 Silverlight 3 中已解决,因此,如果您的应用程序有硬代码形式的双重编码 URL,将引发"URL 无效"异常。

措施:删除所有硬代码形式的双重编码 URL 并用常规 URL 来替换它们。在从 URL 读取图像前,确保您在使用异常处理程序。

  读取具有相对路径说明符的 XAML 时行为的变化

这仅适用于在 Silverlight 插件对象上指定 XAML 的情况。在 Silverlight 1.0 中,您可以通过使用相对路径说明符(例如 http://example.com/app/../location.xaml)来指定 XAML 位置。 在 Silverlight 3 中,则必须指定完整 URL。

措施:确保您不对 XAML 使用相对路径说明符。确保您在使用插件的异常处理程序。

  针对无效 XAML 报告异常而非静默失败

在运行时使用 createFromXAML 将 XAML 加载到呈现树时,对于您在所分析的 XAML 字符串根元素具有属性的无效 XAML,Silverlight 1.0 将忽略它。Silverlight 3 在这种情况下则会引发异常。

此外,在 Silverlight 1.0 中无效 XAML 属性将静默失败。例如,以下 XAML 在 Silverlight 1.0 中将静默失败,但是 Silverlight 3 会引发异常。

...

措施:确保您在使用异常处理程序。如果由于这些无效属性引发了异常,将需要修复 XAML。

  如果对象由属性路径语法定位,FindName 可能不工作

使用属性路径语法(例如 (Canvas.RenderTransform)(ScaleTransform.ScaleX))定位 Storyboard 中的已命名对象时,FindName 对于 Silverlight 3 中的该对象返回 null。

措施:确保命名了对象,按名称而非属性路径来搜索它。

  针对特定文本换行属性报告异常而非静默失败

对于 Silverlight 1.0 中的 TextBlockTextWrapping 属性的 WrapWithOverflow 值等效于 Wrap,因此此无效属性值不导致异常。如果指定 WrapWithOverflow,Silverlight 3 将引发异常。

措施:使用 Wrap 替换 WrapWithOverFlow 的实例。

  TextBlock 中换行的差异

在 Silverlight 1.0 中,如果没有提供足够的水平空格,TextBlock 有时会将文本换行,这与属性设置相反。这个问题在 Silverlight 3 中已修复,因此您可能看到在某些位置文本不再像以前那样换行了。

措施:如果 TextBlock 元素在 Silverlight 3 中的显示方式与 Silverlight 1.0 中不同,可能就是上述原因造成的。您必须编辑 XAML 以获得所需的结果。

  对 ASX 文件中的标记的处理方式不同

在 Silverlight 1.0 中,只有处于 ASX 中指定的持续时间内的标记才可见。在 Silverlight 3 中,所有标记都是可见的,因此,如果您有使用标记的应用程序,特别是涉及预读这些标记,可能看到略微不同的行为。

措施:如果您在预期时间范围之外预读标记和接收标记,必须手动截断它们。


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: JavaScriptJava