我正在尝试从android的phonegap中获取联系人数据,在这里我试图获取联系人图像并尝试将其替换为默认图像,如果实际的联系人照片不存在。
现在在phonegap中,当我们尝试访问照片时,即使照片不存在,也会返回网址。所以我在这里尝试创建Image
对象并分配从phonegap获取的照片网址(如果图像不存在),Image
对象将引发onerror
异常并且在内部我正在更改其{ {1}}属性为默认图片。
但现在问题是src
函数触发后我的意思是在数据加载后因此onerror
属性没有被更改。所以任何人都可以告诉我如何管理src
onerror
答案 0 :(得分:0)
为其指定默认背景图片,即联系人照片。 而不是让它加载照片,如果真实的照片存在,它将加载它。
html代码是:
<img src="Path/to/image" id="img"/>
css将是这样的:
#img{background: url(path/to/default/image) no-repeat scroll 0 0 transparent; backgorund-size:100% 100%; height:45px; width:45px; display:block;}
答案 1 :(得分:0)
你没有展示你是如何创建contactData的,我自己也没有这样做,但是在阅读代码时需要考虑几个因素,假设当前你的调试控制台显示
1
2
虽然没有分配图像。
在主循环中,您调用 contactData.setContactImage(的 imgVal.src 强>);使用 image src 属性作为参数(图片网址);在错误循环中,指定 this.src ,希望它是相同的imgVal对象,然后将对象的 outerHTML 属性传递给setContactImage。这是非常不同的,为了保持一致性,您应该将this.src作为参数传递,我找不到官方文档,但是从一些示例中我发现参数应该是完整的Image对象。无论参数类型如何,它都需要在两次调用中保持一致。
为了让您的生活更轻松,javascript使用闭包,即imgVal在onerror事件中仍然可用,因此您可以使用imgVal代替此;
在主循环和错误声明中尝试console.log(imgVal)(或者调用setContactData函数的确切参数);这应该清楚了;
恐怖不可为时;您正在调用一个将开始自己执行的方法。可能禁止在onerror子句中调用它(因为你冒着无限的错误循环风险) - 这只是一个假设,但我从未尝试过;但你仍然可以解决这个问题,在onerror函数中创建一个新的Image对象。